Ich möchte eine Datei einlesen (als Liste oder Array), welche folgendermassen strukturiert ist:
Code: Alles auswählen
Preiselbeeren, Brombeeren, ....
Seerosen...
(Leere Zeile)
BaumNr. AnzBlätter Ort Höhe[m] Breite[m] Umfang[m]
1 200 BB .5 0.8 2
2 50 Rtburg .4 1 1.5
usw.
Ziel ist, diese Angaben in eine andere Datei auszulesen (anders strukturiert und man muss mit den obigen Werte rechnen können, müssen also vom Typ float sein und einzeln ansprechbar sein, wie z.B. Liste[0])
Normalerweise (d.h. wenn es nicht unterschiedlich viele Leerzeichen gibt) würde ich es so machen:
Code: Alles auswählen
for line in file:
for line in zeile:
if line.startswith("P"): #um die 1. Kommentarzeile zu überspringen
continue
if line.startswith("S"): #um die 2. Kommentarzeile zu überspringen
continue
if line.startswith(" "): #um die Leere Zeile zu überspringen
continue
else:
a, b, c, d, e, f=line.split(" ")
print a, b, c, d, e, f
Jedoch bringt dies folgenden Error: Name 'b' not defined.
Ich denke, dies ist wegen den ungleich vielen Leerzeichen, welche die verschiedenen Blöcke wie BaumNr., usw.. trennen und dem line.split(" "), welcher die strings nach jedem leerzeichen trennt...
Diese Leerschläge will ich jedoch nicht manuell verändern,
da ich sehr viele solche Dateien habe (es ist einfach zu zeitaufwändig). Besser wäre es diese irgendwie rauszuschmeissen. Wie?
Wäre eine andere Einlesemethode besser? Welche?
Zusätzlich frage ich mich, wie ich die Zahlen in Fliesskommazahlen umwandeln kann. Ich möchte etwas wie dies machen:
map(string.atof, Liste). Jedoch habe ich im obigen Code keine sichtbare Liste. -->?
Und, würdet ihr den Header mit den Infos Preiselbeeren, usw... anders überspringen? Wie?
Vielen Dank für jeglichen Input!