String in Listenform zu echter Liste?

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.
Clython
User
Beiträge: 151
Registriert: Samstag 21. August 2004, 13:58
Wohnort: Schweiz, BE-2500

String in Listenform zu echter Liste?

Beitragvon Clython » Montag 22. November 2004, 22:34

Tja wie mache ich das?
Wenn ich nämlich z.B. ["Abinadab\n","1\n","0.06\n"] in eine Variable einlese:

Code: Alles auswählen

 liste = ["Abinadab\n","1\n","0.06\n"]


Dann kann ich die Variable nicht bearbeiten wie eine Liste, sonder nur wie ein String. Gibts da ein Befehlt wie str() oder float(), der das macht, oder muss ich das selber coden???
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Montag 22. November 2004, 22:40

Code: Alles auswählen

liste = ["Abinadab\n","1\n","0.06\n"]
StrListe = "".join(liste)
print StrListe

Ergebnis:
Abinadab
1
0.06

Die Sachen stehen untereinander, wegen den "\n" ;)

Also der String sieht eigentlich so aus:

Code: Alles auswählen

Abinadab\n1\n0.06
Clython
User
Beiträge: 151
Registriert: Samstag 21. August 2004, 13:58
Wohnort: Schweiz, BE-2500

Beitragvon Clython » Montag 22. November 2004, 22:59

Hab das Programm so ungeschrieben, dass die Strings genauso geschrieben werden, wie sie ausgegeben werden, wenn ich die Liste mit einer Variable unifiziere und sie dann per print ausgebe. Geht immer noch nicht.

Wozu ist eigentlich dieses StrListe = "".join(liste) gut?
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Montag 22. November 2004, 23:02

Clython hat geschrieben:Wozu ist eigentlich dieses StrListe = "".join(liste) gut?


Damit wird jeder Eintrag in der Liste zu einem String zusammen gefasst... Ist eigentlich ganz praktisch, da man ein "Trennzeichen" angeben kann!

Noch ein Beispiel:

Code: Alles auswählen

liste = [ "eins", "zwei", "drei" ]
print "X".join(liste)


Code: Alles auswählen

einsXzweiXdrei
Clython
User
Beiträge: 151
Registriert: Samstag 21. August 2004, 13:58
Wohnort: Schweiz, BE-2500

Beitragvon Clython » Montag 22. November 2004, 23:12

Praktisch ja, aber tut das umgekehrte von dem, was ich will! Wie verwandle ich einen String in Listenform in eine echte Liste, one, dass ich die einzelnen Einträge aus dem String aus und in die Liste einlesen muss (re.findall() und insert()).

Und kommt mir jetzt nicht mit list(). Das tut nämlich auch nicht was ich will!
Clython
User
Beiträge: 151
Registriert: Samstag 21. August 2004, 13:58
Wohnort: Schweiz, BE-2500

Beitragvon Clython » Montag 22. November 2004, 23:28

split() heisst des Rätsels Lösung.

Wer sucht, der findet. Die Doku und die Suchfunktion von python.org sind aber echt das Letzte.
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Dienstag 23. November 2004, 00:02

Sorry, da hab ich dich nicht richtig verstanden ;)
Clython
User
Beiträge: 151
Registriert: Samstag 21. August 2004, 13:58
Wohnort: Schweiz, BE-2500

Beitragvon Clython » Dienstag 23. November 2004, 00:12

S*** happens. Deutsch schwer... : :?
Benutzeravatar
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Beitragvon mitsuhiko » Dienstag 23. November 2004, 06:59

Du kannst einen String in Listenform ja wieder in eine liste verwandeln

Code: Alles auswählen

liste = eval(string)

Dann kannst du sie normal weiterberabeiten.
TUFKAB – the user formerly known as blackbird
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Dienstag 23. November 2004, 13:35

Naja, eval ist halt nicht ganz unproblematisch, da es beliebigen Code ausführen kann.


Gruß

Dookie

Code: Alles auswählen

#!/usr/bin/env python
import this
Clython
User
Beiträge: 151
Registriert: Samstag 21. August 2004, 13:58
Wohnort: Schweiz, BE-2500

Beitragvon Clython » Dienstag 23. November 2004, 14:42

Danke, aber Split erfüllt genau den Zweck, den ich brauche!

Wer ist online?

Mitglieder in diesem Forum: Don Terremoto, SmombieTV