Tupeln-->Strings???

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Python-Anfänger

Donnerstag 8. September 2005, 15:50

Hallo,

habe vor ein par tagen begonnen mich in python einzuarbeiten...wollte nun mit python auf meine heimische PostgreSQL-Datenbank zugreifen und ein par daten ziehen und sie in einem TextCtrl wiedergeben... :lol: .....habe also ne Query abgefeuert und getresult() getätigt...nun sollte er eine liste von Tupeln erstellt haben...(hat er auch)...doch jetzt weiß ich nich wie ich die liste mit tupeln in strings convertieren kann....bitte helfen...


danke schon im voraus... :roll:
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Donnerstag 8. September 2005, 15:52

Zeigst Du bitte mal wie die Liste aussieht und wie Du sie nachher haben willst. Ich weiss nämlich nicht genau was Du meinst :)
Python-Anfänger

Donnerstag 8. September 2005, 16:01

äh....ja...wenn ich es mit print ausgebe sieht es so aus......:

Code: Alles auswählen

 [('Test1'), ('Test2'), ('Test3')]
ich hätte allerdings gern das sie fein säuberlich in dem TextCtrl stehn like this:

Code: Alles auswählen

Test1
Test2
Test3
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 8. September 2005, 16:24

Code: Alles auswählen

res = [('Test1'), ('Test2'), ('Test3')]
for r in res:
    print r[0]
My god, it's full of CARs! | Leonidasvoice vs Modvoice
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Donnerstag 8. September 2005, 16:31

Nur so als ergänzende Frage: Sind das überhaupt Tupeln? Sind's nicht erst welche wenn man ('Test1',) schreibt? Es funktioniert nämlich auch einfach for r in res: print r.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 8. September 2005, 16:41

mawe hat geschrieben:Nur so als ergänzende Frage: Sind das überhaupt Tupeln? Sind's nicht erst welche wenn man ('Test1',) schreibt? Es funktioniert nämlich auch einfach for r in res: print r.
:shock: Hast mich wieder einmal erwischt, wie ich mit offenen Augen geschlafen habe. Ja, es sind in der Form (Wert) ohne Komma wirklich keine Tupeln. Umso verwunderlicher ist dann wie Python-Anfänger [('Test1'), ('Test2'), ('Test3')] rausbekommt:

Code: Alles auswählen

In [26]: res = [('Test1'), ('Test2'), ('Test3')]
In [27]: res
Out[27]: ['Test1', 'Test2', 'Test3']
My god, it's full of CARs! | Leonidasvoice vs Modvoice
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Donnerstag 8. September 2005, 16:48

mawe hat geschrieben:Nur so als ergänzende Frage: Sind das überhaupt Tupeln? Sind's nicht erst welche wenn man ('Test1',) schreibt? Es funktioniert nämlich auch einfach for r in res: print r.
Das hab ich mir jetzt auch gerade gedacht.

Code: Alles auswählen

>>> list = [('Test1'), ('Test2'), ('Test3')]
>>> for item in list: print item
...
Test1
Test2
Test3
//EDIT grml. zu spät
TUFKAB – the user formerly known as blackbird
BlackJack

Donnerstag 8. September 2005, 23:50

mawe hat geschrieben:Nur so als ergänzende Frage: Sind das überhaupt Tupeln? Sind's nicht erst welche wenn man ('Test1',) schreibt?
Da oben das sind zwar keine Tupel, aber im "Original" sind es sicher welche. Die kommen aus der Datenbank und laut DB Api 2.0 werden Tupel zurückgegeben.
Python-Anfänger

Freitag 9. September 2005, 07:54

vielen dank für eure vielen antworten es funktioniert jetz...ich will ja nich aufdringlich werden :oops: aber kann mir auch einer erklären wie genau und warum..das jetz funktioniert habe folgene variante benutzt...

Code: Alles auswählen

res = [('Test1'), ('Test2'), ('Test3')] 
for r in res:
     print r[0]
Gast

Freitag 9. September 2005, 08:06

" Hast mich wieder einmal erwischt, wie ich mit offenen Augen geschlafen habe. Ja, es sind in der Form (Wert) ohne Komma wirklich keine Tupeln. Umso verwunderlicher ist dann wie Python-Anfänger [('Test1'), ('Test2'), ('Test3')] "

ich arbeite gerade mit PyGreSQL und wenn dort mit query's und vorallem mit getresult() gearbeitet wird ...werden sachen wie [('Test1'), ('Test2'), ('Test3')]
zurück gegeben...
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Freitag 9. September 2005, 08:13

Hi

Ich nehme an dass es nur wegen der Darstellung dazu gekommen ist:
Anzeige: [('Test1'), ('Test2'), ('Test3')] -> sind tuples (mit tuple('Test1') erstellt oder so)
Wenn man es halt so wieder in python eingibt, werden daraus halt strings weil bei tuples mit einem element wird kein tuple erstellt.

Code: Alles auswählen

tuple( ['Test1'] ) -> ('Test1')
eval(" ('Test1') ") -> 'Test1'
Gruss
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 9. September 2005, 09:45

Python-Anfänger hat geschrieben:vielen dank für eure vielen antworten es funktioniert jetz...ich will ja nich aufdringlich werden :oops: aber kann mir auch einer erklären wie genau und warum..das jetz funktioniert habe folgene variante benutzt...

Code: Alles auswählen

res = [('Test1'), ('Test2'), ('Test3')] 
for r in res:
     print r[0]
Das ist recht einfach: Es ist ja erstmal eine Liste, in der Tupeln sind (sein sollten). Durch diese iterierst du mit for (siehe for in einem beliebigen Python-Buch). Dann hast du die einzelnen Tupeln, auf die du zugreifen kannst. Diese können mehrere Werte beinhalten, aber du willst den ersten Wert, also [0]. Klarer?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten