Liste aus String?

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.
Brok
User
Beiträge: 6
Registriert: Donnerstag 30. August 2007, 16:23

Liste aus String?

Beitragvon Brok » Dienstag 21. Oktober 2008, 17:59

Hallo

habe einen string der z.B. so aussieht.

Code: Alles auswählen

string = "['103', '35235', '342362362', '2']"


wie krieg ich die integer Werte in eine Liste ?

Grüße und noch einen schönen Fußballabend !
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Dienstag 21. Oktober 2008, 18:12

Reguläre Ausdrücke? ``(\d+?)`` könnte das sein was du suchst.

Fußball? Wie, wo, was?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Beitragvon numerix » Dienstag 21. Oktober 2008, 18:15

Muss der String so aussehen? Ich vermute mal, dass da vorher schon was nicht optimal gemacht wurde ...

Ansonsten:

Code: Alles auswählen

>>> s = "['103', '35235', '342362362', '2']"
>>> [int(t.strip()[1:-1]) for t in s[1:-1].split(",")]
[103, 35235, 342362362, 2]
Benutzeravatar
name
User
Beiträge: 254
Registriert: Dienstag 5. September 2006, 16:35
Wohnort: Wien
Kontaktdaten:

Beitragvon name » Dienstag 21. Oktober 2008, 19:54

Hatten wir sowas nicht schon vor kurzem?
Ohloh | Mein Blog | Jabber: segfaulthunter@swissjabber.eu | asynchia – asynchrone Netzwerkbibliothek

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.
abgdf

Beitragvon abgdf » Dienstag 21. Oktober 2008, 21:05

Von hinten durch die Brust ins Auge:

Code: Alles auswählen

#!/usr/bin/env python

import os

string = "['103', '35235', '342362362', '2']"

f = open("temp", "w")
f.write("a = " + string + "\n")
f.write("for i in a: print i\n")
f.close()

os.chmod("temp", 0755)
f2 = os.popen("python ./temp")
mylist = f2.readlines()
f2.close()

for i in range(len(mylist)):
    mylist[i] = int(mylist[i].rstrip("\n"))

for i in mylist:
    print i

:lol:

Kann man vielleicht "os.open()" auch irgendwie eine "virtuelle" Datei zuordnen, so daß man nicht gleicht wirklich auf die Festplatte zu schreiben braucht ?
Z.B. so eine Art Ramdisk einrichten ?

Gruß
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Beitragvon numerix » Dienstag 21. Oktober 2008, 22:21

Und hier noch der Einzeiler für die Freunde von eval() ... :)

Code: Alles auswählen

>>> [int(s) for s in eval("['103', '35235', '342362362', '2']")]
[103, 35235, 342362362, 2]
Brok
User
Beiträge: 6
Registriert: Donnerstag 30. August 2007, 16:23

Beitragvon Brok » Mittwoch 22. Oktober 2008, 06:30

Danke an alle !
Poisos
User
Beiträge: 6
Registriert: Freitag 24. Oktober 2008, 08:41

Beitragvon Poisos » Freitag 24. Oktober 2008, 09:19

@ abgdf
Vielleicht hilft das: Such' mal in der Python Hilfe nach "tempfile" oder "BufferedWriter".
Ich bin mit allerdings nicht sicher, ob es das ist, was Du willst!?

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder