txt-Datei importieren und jede Zeile als Liste haben

Ich bin ein neuer Python-Benutzer.

Ich habe eine txt-Datei, die etwas wie sein wird:

3,1,3,2,3
3,2,2,3,2
2,1,3,3,2,2
1,2,2,3,3,1
3,2,1,2,2,3

aber es können weniger oder mehr Zeilen sein.

Ich möchte jede Zeile als Liste importieren.

Ich weiß, dass man das auch so machen kann:

filename = 'MyFile.txt' 
fin=open(filename,'r')
L1list = fin.readline()
L2list = fin.readline()
L3list = fin.readline()

aber da ich nicht weiß, wie viele Zeilen ich haben werde, gibt es eine andere Möglichkeit, einzelne Listen zu erstellen?

Erstellen Sie keine separaten Listen, sondern eine Liste von Listen:

results = []
with open('inputfile.txt') as inputfile:
    for line in inputfile:
        results.append(line.strip().split(','))

oder noch besser, verwenden Sie das Modul csv:

import csv

results = []
with open('inputfile.txt', newline='') as inputfile:
    for row in csv.reader(inputfile):
        results.append(row)

Listen oder Wörterbücher sind weit überlegene Strukturen, um eine beliebige Anzahl von Dingen, die aus einer Datei gelesen werden, im Auge zu behalten.

Beachten Sie, dass Sie mit beiden Schleifen auch die Datenzeilen einzeln ansprechen können, ohne den gesamten Inhalt der Datei in den Speicher einlesen zu müssen; anstatt results.append() zu verwenden, verarbeiten Sie diese Zeile einfach direkt dort.

Nur der Vollständigkeit halber hier die kompakte Einzeiler-Version, um eine CSV-Datei in einem Rutsch in eine Liste einzulesen:

import csv

with open('inputfile.txt', newline='') as inputfile:
    results = list(csv.reader(inputfile))
Kommentare (1)

Erstellen Sie eine Liste von Listen:

with open("/path/to/file") as file:
    lines = []
    for line in file:
        # The rstrip method gets rid of the "\n" at the end of each line
        lines.append(line.rstrip().split(","))
Kommentare (6)
with open('path/to/file') as infile: # try open('...', 'rb') as well
    answer = [line.strip().split(',') for line in infile]

Wenn Sie die Zahlen als int haben wollen:

with open('path/to/file') as infile:
    answer = [[int(i) for i in line.strip().split(',')] for line in infile]
Kommentare (1)