Text aus Datei kopieren, ändern, einfügen...
Verfasst: Mittwoch 25. Juni 2014, 13:43
Hallo Leute!
Ich arbeite gerade an folgendem Programm: Ich möchte in einer txt-Datei einen bestimmten Bereich aufsuchen (Beispiel: Zeile 10-70), also anfangzeile= 10 und endezeile = 70; diese Zeilen einer Variable zuweisen, dann in diesem Bereich einen bestimmten Text suchen und mit einer fortlaufenden Zahl ersetzen ("__1" mit "__2" und "__0" mit "__1"). Den neuen Text möchte ich dann in der Zeile 71 einfügen bzw. anhängen, also den Text dahinter und davor NICHT löschen... Das Ganze soll dann in einer Schleife 100 mal durchgeführt werden, bis ich "__99" mit "__100" ersetze. Die Datei sieht wie folgt aus:
"
BEGIN OPERATION
TYPE = Backward 2D
VAR_IN = A__0
VAR_IN = Abstand
VAR_OUT = A__1
END OPERATION
BEGIN OPERATION
TYPE = Fit Vector
VAR_IN = A__0
CONST_IN = 0
VAR_IN = A__1
CONST_IN = 0
VAR_OUT = Vec__1
END OPERATION
BEGIN OPERATION
TYPE = Point From Vector
CHOICE_IN = Second Endpoint
VAR_IN = Vec__1
VAR_OUT = ende_vec__1
END OPERATION
BEGIN OPERATION
TYPE = Point From Vector
CHOICE_IN = First Endpoint
VAR_IN = Vec__1
VAR_OUT = drehpunkt__1
END OPERATION
BEGIN OPERATION
TYPE = Rotate Vector
VAR_IN = Vec__1
VAR_IN = drehpunkt__1
CONST_IN = 270
VAR_OUT = NV__1
END OPERATION
BEGIN OPERATION
TYPE = Point From Vector
CHOICE_IN = Second Endpoint
VAR_IN = NV__1
VAR_OUT = obenP__1
END OPERATION
BEGIN OPERATION
TYPE = Backward 2D
VAR_IN = A__1
VAR_IN = Abstand
VAR_OUT = A__2
END OPERATION"
Das "A__2" am Ende ist dann der Anfang vom neuen Block, würde also so weiter gehen:
"BEGIN OPERATION
TYPE = Backward 2D
VAR_IN = A__2
VAR_IN = Abstand
VAR_OUT = A__3
END OPERATION
BEGIN OPERATION
TYPE = Fit Vector
VAR_IN = A__2
CONST_IN = 0
VAR_IN = A__3
CONST_IN = 0
VAR_OUT = Vec__3
END OPERATION
.
.
."
Bis jetzt geht mein Quellcode so weit, dass ich innerhalb der Datei finde und einer liste zuweise:
Danach ersetze ich alles richtig und würde nun jeden einzelnen Index der Liste zeilenweise ab der Zeile "endezeile+1", also 71, einfügen. Bis jetzt weiß ich noch nicht, wie ich die einzelnen Werte der Liste zeilenweise da eingefügt bekomm, aber das würde ich schon irgendwie hinbekommen.
Ich frage mich nur: gibt es da vielleicht einen eleganteren Weg, also z.B. mit einem einzelnen String zu arbeiten, in welchen ich den ganzen Text einfüge, bearbeite und in die Datei wieder einbinde?
Ich arbeite gerade an folgendem Programm: Ich möchte in einer txt-Datei einen bestimmten Bereich aufsuchen (Beispiel: Zeile 10-70), also anfangzeile= 10 und endezeile = 70; diese Zeilen einer Variable zuweisen, dann in diesem Bereich einen bestimmten Text suchen und mit einer fortlaufenden Zahl ersetzen ("__1" mit "__2" und "__0" mit "__1"). Den neuen Text möchte ich dann in der Zeile 71 einfügen bzw. anhängen, also den Text dahinter und davor NICHT löschen... Das Ganze soll dann in einer Schleife 100 mal durchgeführt werden, bis ich "__99" mit "__100" ersetze. Die Datei sieht wie folgt aus:
"
BEGIN OPERATION
TYPE = Backward 2D
VAR_IN = A__0
VAR_IN = Abstand
VAR_OUT = A__1
END OPERATION
BEGIN OPERATION
TYPE = Fit Vector
VAR_IN = A__0
CONST_IN = 0
VAR_IN = A__1
CONST_IN = 0
VAR_OUT = Vec__1
END OPERATION
BEGIN OPERATION
TYPE = Point From Vector
CHOICE_IN = Second Endpoint
VAR_IN = Vec__1
VAR_OUT = ende_vec__1
END OPERATION
BEGIN OPERATION
TYPE = Point From Vector
CHOICE_IN = First Endpoint
VAR_IN = Vec__1
VAR_OUT = drehpunkt__1
END OPERATION
BEGIN OPERATION
TYPE = Rotate Vector
VAR_IN = Vec__1
VAR_IN = drehpunkt__1
CONST_IN = 270
VAR_OUT = NV__1
END OPERATION
BEGIN OPERATION
TYPE = Point From Vector
CHOICE_IN = Second Endpoint
VAR_IN = NV__1
VAR_OUT = obenP__1
END OPERATION
BEGIN OPERATION
TYPE = Backward 2D
VAR_IN = A__1
VAR_IN = Abstand
VAR_OUT = A__2
END OPERATION"
Das "A__2" am Ende ist dann der Anfang vom neuen Block, würde also so weiter gehen:
"BEGIN OPERATION
TYPE = Backward 2D
VAR_IN = A__2
VAR_IN = Abstand
VAR_OUT = A__3
END OPERATION
BEGIN OPERATION
TYPE = Fit Vector
VAR_IN = A__2
CONST_IN = 0
VAR_IN = A__3
CONST_IN = 0
VAR_OUT = Vec__3
END OPERATION
.
.
."
Bis jetzt geht mein Quellcode so weit, dass ich innerhalb der Datei finde und einer liste zuweise:
Code: Alles auswählen
with open (pfad) as rfile:
lines =rfile.readlines()[anfangzeile:endezeile]
Ich frage mich nur: gibt es da vielleicht einen eleganteren Weg, also z.B. mit einem einzelnen String zu arbeiten, in welchen ich den ganzen Text einfüge, bearbeite und in die Datei wieder einbinde?