Ich bin neu in der Python-Programmierung und lerne Python mit einfachen Programmen. Hier ist, was ich tun möchte: Wenn ich eine Textdatei mit Zahlen habe: sag das eine f1.txt
%Vor%Ich möchte die erste Spalte in a1, die zweite in a2 und so weiter bekommen. Ich weiß oben Code kann falsch sein, bitte sagen Sie mir, wo ich falsch gelaufen bin und wie man es korrigiert. Besonders verstehe ich nicht den Befehl 'ln.strip (). Split ()'. Kann jemand helfen?
Du könntest es so machen:
%Vor% Zuallererst verwenden wir die with
Anweisung, um die Datei zu öffnen. Dadurch wird sichergestellt, dass die Datei automatisch geschlossen wird, auch wenn Fehler auftreten. Es ist einfach schöner. Während die Datei geöffnet ist, wird f
das Dateihandle sein.
Nun erlaubt uns Python, über die Zeilen einer Datei zu iterieren, indem Sie einfach über das Datei-Handle iterieren. So wird for line in f
automatisch über alle Zeilen iterieren. Es ist nicht notwendig, readlines()
zuerst aufzurufen, und sicherlich nicht lines[0:len(lines)]
, was im Grunde nur eine Kopie der Liste erstellt - Sie könnten einfach auch über lines
iterieren.
Jetzt innerhalb der Schleife nehmen wir die Zeile und teilen sie durch Whitespace auf - ohne Argumente str.split
wird das immer tun. str.split
gibt eine Liste zurück, also speichern wir diese in einer zusätzlichen Variablen. Als nächstes hängen wir jede Spalte an die richtige Liste an. Und da Sie die Werte als Zahlen haben möchten, konvertieren wir sie in Ganzzahlen.
Die von Ihnen erwähnte str.strip
entfernt grundsätzlich alle führenden oder nachgestellten Leerzeichen von die Saite. Da wir str.split
ohne Argumente verwenden, werden zusätzliche Leerzeichen ebenfalls entfernt, also brauchen wir das nicht wirklich.
Schließlich ist es etwas lästig, vier getrennte Listen in separaten Variablen zu haben. Sie könnten stattdessen einfach eine Liste von Listen erstellen:
%Vor% Und dann können Sie innerhalb der Schleife data[i]
an a[i]
anfügen:
Wenn Sie über enumerate
iterieren, erhalten Sie nicht nur den Wert (den Sie würde beim Iterieren knapp über die Liste kommen, aber auch der Index. Wenn wir das verwenden, erhalten wir den Index jedes Elements innerhalb der geteilten Linie und können es automatisch an die richtige Unterliste von a
anhängen.
Ihr Einzug ist in der for
-Schleife falsch. Der gesamte Code, der in der Schleife enthalten sein soll, sollte um 4 Leerzeichen eingerückt sein.
Die Zeile a1= line()
wird nichts tun. Die Syntax a = A()
würde a
gleich dem Ergebnis einer Funktion A()
oder einer neuen Instanz einer Klasse A
setzen. Wenn Sie der Liste a1
eine Zeile hinzufügen möchten, müssen Sie a1.append(line)