Python-Lese aus Datei in mehrere Listen

Ich glaube nicht, dass jemand mich in die richtige Richtung zeigen könnte?

Ich frage mich, wie es am besten ist, Werte aus einer Textdatei herauszuziehen, dann brechen sie auf und legen sie wieder in Listen an der gleichen Stelle wie ihre entsprechenden Werte.

Tut mir leid wenn das nicht klar ist, vielleicht wird das deutlich machen. Dies ist der Code, der die Datei ausgibt:

#while loop with open('values', 'a') as o: o.write("{}, {}, {}, {}, {}, {}, {}\n".format(FirstName[currentRow],Surname[currentRow], AnotherValue[currentRow], numberA, numberB)) currentRow+1 

Ich möchte das Gegenteil tun und die Werte nehmen, wie oben formatiert und sie in Listen an der gleichen Stelle zurücksetzen. Etwas wie:

 #while loop with open('values', 'r') as o: o.read("{}, {}, {}, {}, {}, {}, {}\n".format(FirstName[currentRow],Surname[currentRow], AnotherValue[currentRow], numberA, numberB)) currentRow +1 

Vielen Dank

4 Solutions collect form web for “Python-Lese aus Datei in mehrere Listen”

Ich denke, der beste entsprechende Weg, um es zu tun, ruft split auf den Text lesen in:

 FirstName[currentRow],Surname[currentRow], AnotherValue[currentRow], numberA, numberB = o.read().strip().split(", ") 

Es gibt kein echtes Äquivalent der formatierten Eingabe, wie scanf in C.

Du solltest so etwas wie folgendes machen können:

 first_names = [] surnames = [] another_values = [] number_as = [] number_bs = [] for line in open('values', 'r'): fn, sn, av, na, nb = line.strip().split(',') first_names.append(fn) surnames.append(sn) another_values.append(av) number_as.append(float(na)) number_bs.append(float(nb)) 

Die for line in open() Teil iteriert über jede Zeile in der Datei und die fn, sn, av, na, nb = line.strip().split(',') Bit Streifen die Newline \n aus dem Ende von jedem Line und teilt sie auf die Kommas.

In der Praxis würde ich aber wahrscheinlich das CSV-Modul oder so etwas wie Pandas benutzen, die die Randfälle besser behandeln. Zum Beispiel wird der oben genannte Ansatz brechen, wenn ein Name oder ein anderer Wert ein Komma hat!

 with open('values.txt', 'r') as f: first_names, last_names, another_values, a_values, b_values = \ (list(tt) for tt in zip(*[l.rstrip().split(',') for l in f])) 

Sofern Sie keine Aktualisierung benötigen, ist auch die Listenkonvertierungsliste list(tt) for tt in unnötig.

izip von itertools anstelle von zip .

Wenn Sie erlauben, das Dateiformat zu entscheiden, kann das Speichern und Laden als json-Format nützlich sein.

 import json #test data FirstName = range(5) Surname = range(5,11) AnotherValue = range(11,16) numberAvec = range(16,21) numberBvec = range(21,26) #save all = [FirstName,Surname,AnotherValue,numberAvec,numberBvec] with open("values.txt","w") as fp: json.dump(all,fp) #load with open("values.txt","r") as fp: FirstName,Surname,AnotherValue,numberAvec,numberBvec = json.load(fp) 

Values.txt:

 [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9, 10], [11, 12, 13, 14, 15], [16, 17, 18, 19, 20], [21, 22, 23, 24, 25]] 
  • Standardtext sowie Liste textvariable Eintrags-Widget Tkinter
  • Python Das angehängte Element in der Liste ändert sich, wenn sich seine ursprüngliche Variable ändert
  • Python-Äquivalent von Haskells [1 ..] (um eine Liste zu indexieren)
  • Wie überprüfe ich, ob alle folgenden Elemente in einer Liste sind?
  • Spalten von Werten aus einem CSV Reader Python
  • Initialisieren Sie die Liste mit demselben Bool-Wert
  • Python Wie bekomme ich Summe von Zahlen in einer Liste, die Strings in ihm auch hat
  • Brechen Sie die Python-Liste in mehrere Listen, mischen Sie jede Liste separat
  • Python - Erstellen Sie eine Liste mit Anfangskapazität
  • Python list_of_tuples: Summe zweiter Wert jedes Tupels, nur wenn der erste Wert des Tupels == etwas
  • Beitritt von Paaren von Elementen einer Liste - Python
  • Python ist die beste Programmiersprache der Welt.