Hallo Forum,
ich habe folgendes Problem:
wie kann man eine textdatei folgender gestalt:
1 3 7
3 6 8
7 5 3
in ein array einlesen?
die einzelnen zahlen sind mit tabulatoren getrennt.
wie man einzelne zeilen aus einer datei einlesen kann weiss ich...
leider bringt mir das nicht viel
Vielen Dank.
Grüsse
Carsten
Array aus Datei einlesen
Das kannst Du zum Beispiel mit dem `csv` Modul machen.
Code: Alles auswählen
In [14]: f = open('test.csv', 'rb')
In [15]: r = csv.reader(f, delimiter='\t')
In [16]: [map(int, row) for row in r]
Out[16]: [[1, 3, 7], [3, 6, 8], [7, 5, 3]]
In [17]: f.close()
Hallo,
nachdem mir letztens so schön geholfen wurde hätte ich eine weitere Frage.
Mein Programm ist soweit fertig. Ich habe nur folgendes Problem.
Mein einzulesende Datei (welche ich bekanntermassen in ein
Array abspeichern möchte) hat nun ein etwas anderes Assehen:
__1 +2 -4
_10 +3 -5
100 -9 +4
_ dient nur zu Illustration des Leerzeichens
Das heisst, der "delimiter" ist kein Tabulator sondern jeweils ein Leerzeichen.
Die erste Zeile startet mit 2 Leerzeichen.
Die zweite Zeile beginnt mit einem Leerzeichen.
Vor den Zahlen steht (+) oder (-)*
*keine Ahnung inwieweit das ein Problem ist.
Ich hoffe das Problem ist lösbar.
Vielen Dank im Voraus.
nachdem mir letztens so schön geholfen wurde hätte ich eine weitere Frage.
Mein Programm ist soweit fertig. Ich habe nur folgendes Problem.
Mein einzulesende Datei (welche ich bekanntermassen in ein
Array abspeichern möchte) hat nun ein etwas anderes Assehen:
__1 +2 -4
_10 +3 -5
100 -9 +4
_ dient nur zu Illustration des Leerzeichens
Das heisst, der "delimiter" ist kein Tabulator sondern jeweils ein Leerzeichen.
Die erste Zeile startet mit 2 Leerzeichen.
Die zweite Zeile beginnt mit einem Leerzeichen.
Vor den Zahlen steht (+) oder (-)*
*keine Ahnung inwieweit das ein Problem ist.
Ich hoffe das Problem ist lösbar.
Vielen Dank im Voraus.
Willst Du wirklich in arrays und nicht in Listen einlesen? Dann scheint mir PyTables eine Alternative zu sein.
Gruß,
Christian
Gruß,
Christian
Hallo CM,
ich möchste die Daten in eine Liste speichern.
PyTables ist auf den ersten Blick ziemlich umfangreich
Ich möchte ja eigentlich nur eine Datei mit 3 Zeilen einlesen.
Wenn es irgendwie einfacher geht als mit PyTables würde ich mich
deshalb sehr freuen.
Freue mich auf Antwort,
Carsten
ich möchste die Daten in eine Liste speichern.
PyTables ist auf den ersten Blick ziemlich umfangreich
Ich möchte ja eigentlich nur eine Datei mit 3 Zeilen einlesen.
Wenn es irgendwie einfacher geht als mit PyTables würde ich mich
deshalb sehr freuen.
Freue mich auf Antwort,
Carsten
Windows XP SP2
Python 2.5c2
Python 2.5c2
- Rebecca
- User
- Beiträge: 1662
- Registriert: Freitag 3. Februar 2006, 12:28
- Wohnort: DN, Heimat: HB
- Kontaktdaten:
Meinst du sowas:
all_numbers sieht dann so aus:
Code: Alles auswählen
f = open("test.txt");
lines = f.readlines();
all_numbers = [];
for l in lines:
all_numbers.append(l.strip().split());
print all_numbers
Code: Alles auswählen
[['1', '+2', '-4'], ['10', '+3', '-5'], ['100', '-9', '+4']]
- Rebecca
- User
- Beiträge: 1662
- Registriert: Freitag 3. Februar 2006, 12:28
- Wohnort: DN, Heimat: HB
- Kontaktdaten:
Ach, und wenn du die Zahlen dann gerne als Integers haettest statt als Strings, koennte die for-Schleife so aussehen:
Da kommt das hier raus:
Code: Alles auswählen
for l in lines:
numbers = [int(i) for i in l.strip().split()];
all_numbers.append(numbers);
Code: Alles auswählen
[[1, 2, -4], [10, 3, -5], [100, -9, 4]]
Nun, Du sprachst von array, die Andern antworten mit Liste, da kann man ja mal Vermutungen anstellen.
Und wo liegt jetzt die Schwierigkeit? Meine Strategie, wenn ich irgendwelche blöden csv-ähnlich-Formate habe, ist erst einmal probieren (andere delimiter), ggf. gar nicht csv verwenden, sondern diverse Variationen auf Rebeccas Ansatz (auch split() kann sehr flexibel eingesetzt werden).
Gruß,
Christian
Und wo liegt jetzt die Schwierigkeit? Meine Strategie, wenn ich irgendwelche blöden csv-ähnlich-Formate habe, ist erst einmal probieren (andere delimiter), ggf. gar nicht csv verwenden, sondern diverse Variationen auf Rebeccas Ansatz (auch split() kann sehr flexibel eingesetzt werden).
Gruß,
Christian
@Rebecca
Vielen Dank, das müsste von der Art her gehen.
@CM
Sorry, mein Fehler.
Ich dachte Array und Liste sind in Phyton vom Prinzip her dasselbe.
Auf die Frage ob Array oder Liste hatte ich dir dann aber geantwortet.
Ich hatte auch schon auf verschiedenen newsgroups und seiten
nach anderen delimitern gesucht.
Aber vielleicht bin ich auch nur zu dumm
Kannst du mir (rein zur Info) vielleicht nochmal sagen wie man
das Leerzeichen bzw. whitesapce als delimiter eingibt?
Das "\t" ja für Tabulator steht , weiss ich ja jetzt schon durch dich.
Grüsse, Carsten
Vielen Dank, das müsste von der Art her gehen.
@CM
Sorry, mein Fehler.
Ich dachte Array und Liste sind in Phyton vom Prinzip her dasselbe.
Auf die Frage ob Array oder Liste hatte ich dir dann aber geantwortet.
Ich hatte auch schon auf verschiedenen newsgroups und seiten
nach anderen delimitern gesucht.
Aber vielleicht bin ich auch nur zu dumm
Kannst du mir (rein zur Info) vielleicht nochmal sagen wie man
das Leerzeichen bzw. whitesapce als delimiter eingibt?
Das "\t" ja für Tabulator steht , weiss ich ja jetzt schon durch dich.
Grüsse, Carsten
Windows XP SP2
Python 2.5c2
Python 2.5c2
Bei split() nehme ich an?
Das ist einfach der Docstring.
Gruß,
Christian
Code: Alles auswählen
S.split([sep [,maxsplit]]) -> list of strings
Return a list of the words in the string S, using sep as the
delimiter string. If maxsplit is given, at most maxsplit
splits are done. If sep is not specified or is None, any
whitespace string is a separator
Gruß,
Christian