for-schleife über Zeilen einer Datei: Nächste + übern. Zeile
Verfasst: Donnerstag 22. November 2012, 22:42
Habe folgendes Problem, an dem ich insgesamt zig Stunden sass. Habe den Beitrag für Studenten übrigens gelesen
. Ich bin kein Student mehr und programmiere höchst selten. Da meine Aufgabe gerade etwas eilt, würde ich mich sehr über Hilfe freuen. Zu dem folgenden Problem habe ich wirklich ausgiebig gegoogelt, aber konkret nichts gefunden.
Folgendes Setting:
- Eingabedatei (txt)
- Ausgabedatei (txt)
Aus der Eingabedatei sollen bestimmte Informationen gezogen werden und in einer etwas anderen Form in die Ausgabedatei geschrieben werden.
Das habe ich soweit auch schon ziemlich gut hinbekommen, nur stehe ich nun vor folgender Schwierigkeit:
Ich gehe per
und entsprechenden if-Schleifen durch die Datei und ziehe mir die Informationen aus der ersten Zeile.
Die Informationen befinden sich aber nicht alle in der ersten Zeile, sondern in Blocks zu je drei Zeilen oder mehr. Man kann sich die Eingabedatei etwa so vorstellen:
vorlauf... bla
120 Informationszeile A1
500 Informationszeile B1
600 Informationszeile C1
600 Informationszeile C1
600 Informationszeile C1
120 Informationszeile A2
500 Informationszeile B2
600 Informationszeile C2
usw.
D.h. also, ich kann den "Zeilentyp" A, B oder C (die jeweils einen verschiedenen Aufbau haben) leicht anhand des Zeilenbeginns erkennen (und frage dies entsprechend per "if" ab).
Wenn ich nun aber per "for line in eingabedatei" die Aer Zeilen durchgehe, möchte ich dabei auch irgendwie die darunterstehenden Informationen in B und C mitnehmen.
Das klappt teilweise auch, indem ich
schreibe und darunter das nächste "if"-Statement schreibe, das sich dann auf Zeile B bezieht und nicht auf A.
Dies klappt aber irgendwie nur teilweise, das Ergebnis gerät irgendwie durcheinander. Problem ist hierbei auch, dass die Informationen, die letztlich in der Ausgabedatei stehen, wild aus den Informationen aus Zeile A, B und C durcheinandergewürfelt sind, d.h. ich muss etwa schreiben (nur Pseudocode:)
D.h. nachdem ich bereits per eingabedatei.next auf Zeile B "gesprungen" bin, muss ich wieder zu A zurückgehen, um weitere Informationen aus A zu bekommen.
Habe leider den Code nicht zuhause vorliegen.... hoffe das war einigermassen verständlich. Ich muss noch dazu sagen, dass es von der Laufzeit her überhaupt nicht perfekt sein muss (da die Dateien eh sehr klein sind) und ich viel mehr nach dem allersimpelstem Weg (falls möglich) ohne Listen etc. suche. Würde mich sehr über eine Antwort freuen...

Folgendes Setting:
- Eingabedatei (txt)
- Ausgabedatei (txt)
Aus der Eingabedatei sollen bestimmte Informationen gezogen werden und in einer etwas anderen Form in die Ausgabedatei geschrieben werden.
Das habe ich soweit auch schon ziemlich gut hinbekommen, nur stehe ich nun vor folgender Schwierigkeit:
Ich gehe per
Code: Alles auswählen
for line in eingabedatei
Die Informationen befinden sich aber nicht alle in der ersten Zeile, sondern in Blocks zu je drei Zeilen oder mehr. Man kann sich die Eingabedatei etwa so vorstellen:
vorlauf... bla
120 Informationszeile A1
500 Informationszeile B1
600 Informationszeile C1
600 Informationszeile C1
600 Informationszeile C1
120 Informationszeile A2
500 Informationszeile B2
600 Informationszeile C2
usw.
D.h. also, ich kann den "Zeilentyp" A, B oder C (die jeweils einen verschiedenen Aufbau haben) leicht anhand des Zeilenbeginns erkennen (und frage dies entsprechend per "if" ab).
Wenn ich nun aber per "for line in eingabedatei" die Aer Zeilen durchgehe, möchte ich dabei auch irgendwie die darunterstehenden Informationen in B und C mitnehmen.
Das klappt teilweise auch, indem ich
Code: Alles auswählen
eingabedatei.next
Dies klappt aber irgendwie nur teilweise, das Ergebnis gerät irgendwie durcheinander. Problem ist hierbei auch, dass die Informationen, die letztlich in der Ausgabedatei stehen, wild aus den Informationen aus Zeile A, B und C durcheinandergewürfelt sind, d.h. ich muss etwa schreiben (nur Pseudocode:)
Code: Alles auswählen
ausgabedatei = eingabedatei.Informationszeile A[1:3] + eingabedatei.Informationszeile C[2:3] + eingabedatei.Informationszeile B[4:7] + eingabedatei.Informationszeile A[4:5]
Habe leider den Code nicht zuhause vorliegen.... hoffe das war einigermassen verständlich. Ich muss noch dazu sagen, dass es von der Laufzeit her überhaupt nicht perfekt sein muss (da die Dateien eh sehr klein sind) und ich viel mehr nach dem allersimpelstem Weg (falls möglich) ohne Listen etc. suche. Würde mich sehr über eine Antwort freuen...