.txt als Liste benutzen

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
frcom
User
Beiträge: 49
Registriert: Sonntag 24. September 2017, 19:35

Hallo allerseits,
Ich habe folgendes Problem: Ich habe mit einem pythonskript eine .txt-Datei erstellt die nur Zahlen enthält und zwar in folgendem Format:
zahl1, zahl2, zahl3, zahl4, zahl5, ...
Nun will ich diese Zahlen wieder benutzen - und zwar als list
Mein Ansatz bisher ist folgender:

Code: Alles auswählen

datei = open("Messwerte_liste.txt", "r")
for line in datei:
    liste = [line.rstrip()]
datei.close()
MEIN Problem dabei: Es wird zwar eine Liste erstellt, die aber folgendermaßen aussieht:
liste = ['zahl1, zahl2, zahl3, zahl4, zahl5, ...']
Die Anführungszeichen am Anfang und am Ende nerven, weil ja jetzt alle Zahlen zusammen ein Objekt in der Liste darstellen, und ich nicht einzelne ansprechen kann...
Les ich die Datei schon völlig falsch ein, oder kann/muss ich das Ganze noch im Nachhinein formatieren?

Ich hoffe Jemand von euch kann mir helfen

Grüße
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@frcom: wie Du bei der Ausgabe auch alle Zahlen in Strings und diese mit Komma in eine Zeile gepackt hast, mußt Du beim Lesen umgekehrt vorgehen. Normalerweise speichert man solche Zahlen aber auch als ein Spalte statt einer Zeile.
frcom
User
Beiträge: 49
Registriert: Sonntag 24. September 2017, 19:35

zu allererst: Vielen Dank! leider verstehe ich nicht genau, was du mit umgekehrt vorgehen meinst...
Die Datei habe ich wie folgt erstellt:

Code: Alles auswählen

with open('Messwerte_liste.txt', 'w') as out_file:
    out_file.write('{0}\n'.format(', '.join(str(n) for n in liste)))
das mit ...join(str(n)... kann ich leider nicht als list angeben, da dann der Fehler kommt, dass "'float' object not iterable" sei...
Ich weiß gerade wirklich überhaupt nicht weiter :/
nezzcarth
User
Beiträge: 1634
Registriert: Samstag 16. April 2011, 12:47

Na ja, erst hast du mehrere Elemente in Strings konvertiert und sie mit 'join' zu einem Gesamt-String zusammengeführt. Jetzt musst du diesen String wieder zerlegen. Dafür gibt es die 'split'-Methode (https://docs.python.org/3/library/stdty ... #str.split). Alternativ kann du dir im Python-Interpreter mit 'dir(…)' die einzelnen Methoden und Attribute eines Objekts anzeigen lassen und mit 'help(…)' eine Kurz-Doku dazu sehen. Das ist neben der Lektüre des Tutorials und der Referenz m.M.n. einer der effektiveren Wege, um Python zu lernen.

Und die Anführungszeichen, die dich oben nerven, gehören nicht zur Zeichenkette, sondern sind einfach nur Anzeige-bedingt.
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

@frcom: Du gehst etwas umständlich vor. Wenn Du Deine Daten beispielsweise zeilenweise speicherst:

Code: Alles auswählen

with open('Messwerte_liste.txt', 'w') as out_file:
    for item in liste:
        out_file.write('{}\n'.format(item))
dann kannst Du sie mit wenig Aufwand wieder einlesen:

Code: Alles auswählen

with open('Messwerte_liste.txt') as in_file:
    data = [float(line) for line in in_file]
frcom
User
Beiträge: 49
Registriert: Sonntag 24. September 2017, 19:35

Super! vielen Dank an euch beide, ich werde beides mal versuchen
Antworten