/ / Python: Textdatei lesen und in verschiedene Listen aufteilen - Python, Liste, Datei, Text

Python: Textdatei lesen und in verschiedene Listen aufteilen - Python, Liste, Datei, Text

Ich habe eine Textdatei, die zwei Zeilen Text enthält. Jede Zeile enthält Schülernamen getrennt durch ein Komma.

Ich versuche ein Programm zu schreiben, das lesen wirdjede Zeile und wandle sie in eine Liste um. Meine Lösung scheint zwei Listen zu erstellen, aber ich weiß nicht, wie man zwischen den beiden unterscheidet, da beide Listen "Dateiliste" genannt werden. Zum Beispiel muss ich vielleicht an die zweite Liste anhängen. Wie würde ich zwischen den beiden unterscheiden?

Oder ist es möglich, völlig unterschiedliche Listen mit unterschiedlichen Namen zu erstellen? Ich möchte, dass das Programm im Idealfall viele Zeilen in der Textdatei verarbeiten kann.

Mein Code ist:

    filelist=[]

with open("students.txt") as students:

for line in students:

filelist.append(line.strip().split(","))


print(filelist)

Antworten:

2 für die Antwort № 1

Sie müssen ein mehrdimensionales Array wie folgt erstellen:

text = open("file.txt")

lines = text.split("n")
entries = []
for line in lines:
entries.append(line.split(","))

Wenn deine Datei ist

John,Doe
John,Smith

dann werden die Einträge sein:

[["John", "Doe"], ["John", "Smith"]]

0 für die Antwort № 2

In Ihrem Code wird die Dateiliste als Listenliste betrachtet, weil Sie eine Liste anhängen, kein Element, in Betracht ziehen filelist += line.strip().split(",") was die Listen verketten wird


0 für die Antwort № 3

zwei Zeilen zu erledigen

with open("file.txt") as f:
qlist = map(lambda x:x.strip().split(","), f.readlines())

oder

with open("file.txt") as f:
qlist = [i.strip().split(",") for i in f.readlines()]

0 für die Antwort № 4

Wenn Sie nach einer Liste für jede Zeile suchen, können Sie ein Wörterbuch verwenden, bei dem der Schlüssel die Zeilennummer und der Wert des Wörterbucheintrags die Liste der Namen für diese Zeile ist. Etwas wie das

with open("my_file.txt", "r") as fin:
students = {k:line[:-1].split(",") for k,line in enumerate(fin)}

print students

Die Zeile [: - 1] soll den Wagenrücklauf am Ende jeder Zeile entfernen