Seite 1 von 1

Tupeln-->Strings???

Verfasst: Donnerstag 8. September 2005, 15:50
von Python-Anfänger
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:

Verfasst: Donnerstag 8. September 2005, 15:52
von mawe
Zeigst Du bitte mal wie die Liste aussieht und wie Du sie nachher haben willst. Ich weiss nämlich nicht genau was Du meinst :)

Verfasst: Donnerstag 8. September 2005, 16:01
von Python-Anfänger
ä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

Verfasst: Donnerstag 8. September 2005, 16:24
von Leonidas

Code: Alles auswählen

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

Verfasst: Donnerstag 8. September 2005, 16:31
von mawe
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.

Verfasst: Donnerstag 8. September 2005, 16:41
von Leonidas
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']

Verfasst: Donnerstag 8. September 2005, 16:48
von mitsuhiko
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

Verfasst: Donnerstag 8. September 2005, 23:50
von BlackJack
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.

danke

Verfasst: Freitag 9. September 2005, 07:54
von Python-Anfänger
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]

Verfasst: Freitag 9. September 2005, 08:06
von Gast
" 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...

Verfasst: Freitag 9. September 2005, 08:13
von rayo
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

Re: danke

Verfasst: Freitag 9. September 2005, 09:45
von Leonidas
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?