Lesen Linien mit Ganzzahlen aus einer Datei in Python?
Habe ich ein Datei-format wie diesem:
9 8 1
3 4 1
...
...
Nun, ich will jede Zeile als drei Ganzzahlen.
Wenn ich
for line in f.readlines():
print line.split(" ")
Dem Skript gedruckt das:
['9', '8', '1\r\n']
['3', '4', '1\r\n']
...
...
Wie kann ich jede Zeile als drei Ganzzahlen?
- Meinst du
for line in f.readlines():
- Nicht gegossen. Konvertieren. Die Allgemeine Frage ist: "Wie verdeckte '123', um die entsprechende Zahl 123?"
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit dem code, den Sie haben und der Bewältigung Ihrer spezifischen Frage, wie konvertieren Sie Ihre Liste mit Ganzzahlen:
Können Sie Durchlaufen jede Zeile und konvertieren der Zeichenfolgen
int
mit dem folgenden Beispiel wird mit list comprehension:Gegeben:
dann:
Ausbeute wird eine Liste von Ganzzahlen
dass Sie dann den Zugriff über Indizes (0 bis 2). z.B.
int_list[0]
enthält3
,int_list[1]
enthält4
,etc.
Eine optimierte version für Ihre Betrachtung:
Den Vorteil der Verwendung von
with
ist, dass es wird automatisch schließen Sie die Datei, wenn Sie fertig sind, oder wenn Sie Begegnung eine Ausnahme.UPDATE:
Basierend auf Ihre Kommentare unten, wenn Sie möchten, dass die zahlen in 3 verschiedenen Variablen, sagen
a
,b
undc
, können Sie Folgendes tun:bekommen und diese:
Zählt das, auf das es 3 zahlen in jeder Zeile.
Beiseite:
Beachten Sie, dass an die Stelle der "list comprehension" (LC) Sie können auch einen "generator-Ausdruck" (GE) in dieser form:
für Ihr spezielles problem mit 3 ganzen zahlen nicht viel Unterschied, aber ich zeige Sie der Vollständigkeit halber. Für größere Probleme, LC mehr Speicher benötigt, als er erzeugt eine komplette Liste im Speicher auf einmal, während GE ein Wert generiert wird eins nach dem anderen, wie gebraucht. Dieser Frage ALSO Generator-Ausdrücke vs. List-Comprehension wird Ihnen mehr Informationen geben, wenn Sie neugierig sind.
ValurError: need more then 2 values to unpack
.Du nicht sagst was du machen willst mit der Liste von Ganzzahlen ist, kann es einen besseren Weg zu Durchlaufen Sie, je nachdem.
Wenn Sie "müssen die Werte, die als drei verschiedene Variablen," dann"
obwohl Sie auch nutzen könnten:
wie gewünscht.
.strip()
überflüssig isttun würde.
mehr vollständig, mit allen Linien, die noch intakt in eine große Zeichenfolge:
geben Ihnen eine Liste mit Antworten, die Sie wollen, für jede Zeile.
Wenn Sie wollen, speichern Sie die zahlen in drei Variablen :
Ausgabe:
Dieser block von code sollte dein problem lösen: