Hallo Leute,
ich hab ein kleines Problem: ich möchte eine Datei einlesen, in der mehrere Punkte sind. Sieht ungefähr so aus.
2.0 0.0 0.0
1.0 2.0 0.0
-2.0 2.0 0.0
-2.0 1.0 0.0
0.0 1.0 0.0
-1.0 -1.0 0.0
0.0 -2.0 0.0
Das sind 7 Punkte mit x, y und z Koordinaten. Problem an der Sache ist, dass die jeweilige Koordinaten in einer Zeile stehen, ich sie aber einzeln brauche. An der Datenstruktur kann ich nichts ändern, da ich die Daten nicht selber erstelle.
Meine Frage: Gibt es in der Python-Library irgendein Modul, mit dem man ganz einfach diese Punkte einlesen kann, obwohl die werte durch Leerzeichen getrennt sind, oder muss ich mir selber was implementieren?
Danke im Vorraus!
Datei-Zugriff
-
- User
- Beiträge: 12
- Registriert: Dienstag 9. Mai 2006, 18:56
Cu Thanatos83
Rettet die Wälder, esst mehr Biber!!!
Rettet die Wälder, esst mehr Biber!!!
-
- User
- Beiträge: 424
- Registriert: Montag 28. Juli 2003, 16:19
- Wohnort: /dev/reality
Mal ohne Code:
-Datei Zeile für Zeile in String einlesen
-String splitten (Leerzeichen)
-die resultierende Liste sind deine Werte (x=float(resList[0]),..)
mfg, querdenker
-Datei Zeile für Zeile in String einlesen
-String splitten (Leerzeichen)
-die resultierende Liste sind deine Werte (x=float(resList[0]),..)
mfg, querdenker
Und jetzt mal mit Code:
BeeWee
Code: Alles auswählen
f = open("deinedatei.abc")
coords = []
for line in f.readlines():
line = line.split(" ")
for dot in line:
coords.append(dot)
Mit beewee's Quelltext bekommt man alledings eine Liste in der nur die Zahlen alle hintereinander stehen. Wenn es eine Liste sein sollte in der Listen mit jeweils 3 Zahlen stehen, damit die Koordinaten als Elemente erhalten bleiben, dann geht das so:
Ergebnis für die Beispieldaten:
Code: Alles auswählen
lines = open('Dateiname', 'r')
coordinates = [map(float, line.split()) for line in lines if line.strip()]
lines.close()
Code: Alles auswählen
[[2.0, 0.0, 0.0],
[1.0, 2.0, 0.0],
[-2.0, 2.0, 0.0],
[-2.0, 1.0, 0.0],
[0.0, 1.0, 0.0],
[-1.0, -1.0, 0.0],
[0.0, -2.0, 0.0]]
@beewee: datei.readlines ist in diesem Falle unpraktisch, da es die gesamte Datei auf einmal in eine Liste einliest und erst danach über diese Liste iterierst, was du suchst, ist eigentlich xreadlines (genauso wie xrange vs. range), allerdings ist xreadlines inzwischen durch __iter__ implementiert.
Lange Rede, kurzer Sinn: schreib
Lange Rede, kurzer Sinn: schreib
Code: Alles auswählen
for line in f:
-
- User
- Beiträge: 12
- Registriert: Dienstag 9. Mai 2006, 18:56
SAUGEIL!!!!!!!!
funzt perfekt!
Danke!
funzt perfekt!
Danke!
Cu Thanatos83
Rettet die Wälder, esst mehr Biber!!!
Rettet die Wälder, esst mehr Biber!!!
Im einfachsten Fall sieht das ungefähr so aus:
Code: Alles auswählen
datafile = open('data.txt', 'r')
result = map(int, datafile.readlines()[2:])
datafile.close()
hi, also mit
import string
datafile=open('testwave1.dat', 'r')
result=datafile.readlines()[3:]
d=string.join(result, ",")
datafile.close()
erreiche ich, dass die zahlenwerte folgendermaßen ausgedruckt werden:
0
,0
,0
,usw
mich stört also die leerzeile die angefügt wird.
ich möchte, dass alles folgendermaßen aussieht:
0, 0, 0, usw.
wie kann ich dies erreichen?
import string
datafile=open('testwave1.dat', 'r')
result=datafile.readlines()[3:]
d=string.join(result, ",")
datafile.close()
erreiche ich, dass die zahlenwerte folgendermaßen ausgedruckt werden:
0
,0
,0
,usw
mich stört also die leerzeile die angefügt wird.
ich möchte, dass alles folgendermaßen aussieht:
0, 0, 0, usw.
wie kann ich dies erreichen?
- DatenMetzgerX
- User
- Beiträge: 398
- Registriert: Freitag 28. April 2006, 06:28
- Wohnort: Zürich Seebach (CH)
Code: Alles auswählen
#UNGETESTET
datafile=open('testwave1.dat', 'r')
d = ','.join(datafile.readlines()[3:])
d = d.replace('\n', '') #musst die linefeeds entfernen
datafile.close()
Vielleicht besser:DatenMetzgerX hat geschrieben:Code: Alles auswählen
#UNGETESTET datafile=open('testwave1.dat', 'r') d = ','.join(datafile.readlines()[3:]) d = d.replace('\n', '') #musst die linefeeds entfernen datafile.close()
Code: Alles auswählen
datafile = open("testwave1.dat", "r")
d = ",".join([x.strip() for x in datafile.readlines()[3:]])
datafile.close()
Zuletzt geändert von Joghurt am Freitag 20. Oktober 2006, 18:58, insgesamt 1-mal geändert.