So, ich habe mir das ganze angeschaut und weiter umgesetzt, hänge aber wieder (jetzt aber an nem anderen Punkt).
Die Ersetzungen sind noch komplizierter:
Hier erstmal ein Ausschnitt aus der zu bearbeitenden Datei, damit lässt es sich leichter erklären:
Code: Alles auswählen
0.00400000 62
0.000 3075 __
6.160 98555 2
8.192 130051 99
8.936 141583 141
10.856 171343 1
14.896 233963 195
15.396 241713 2
17.400 272775 99
18.148 284369 255
20.068 314129 14
24.200 378175 195
24.488 382639 1
26.492 413701 99
27.224 425047 101
29.144 454807 3
33.532 522821 195
34.208 533299 1
36.220 564485 99
36.952 575831 251
38.872 605591 6
42.996 669513 195
43.924 683897 2
Es soll nun, wenn am Zeilenende eine 141 steht, die Zahl, die nach der auf die 141\n folgende 195\n steht, ersetzt werden. Wenn dort eine 1\n steht, soll diese durch 77\n ersetzt werden, wenn dort eine 2\n steht, soll diese durch 70\n ersetzt werden.
Ich muss also über Vierpäckchen iterieren. Das habe ich soweit auch hinbekommen.
Jetzt wird's noch einen Schritt komplexer und da hakt's:
Es soll jetzt nicht nur nach den 141ern geschaut werden, sondern nach allen sogenannten 'incorrect conditions' (das sind 141,142,151,152,241,242,251 und 252). Im Auschnitt oben würde also die 1\n in Zeile 24 durch 77\n ersetzt, nicht aber die in Zeile 14 und 19.
Eigentlich ganz klar, dachte ich, ich iteriere über eine Liste in der die 'incorrect conditions' stehen:
Code: Alles auswählen
incorrect = ['141\n','142\n','151\n','152\n','241\n','242\n','251\n','252\n']
#correct = ['144\n','155\n','244\n','255\n','101\n','102\n','201\n','202\n']
fd1 = open('text.txt')
fd2 = open('text.txt2','w')
lines = fd1.readlines()
for i in lines [0:3]:
fd2.write(i)
for a in incorrect:
for l1,l2,l3,l4 in zip(lines, lines[1:], lines[2:], lines[3:]):
if l1.endswith(a) and l3.endswith('195\n'):
l4=l4.replace(' 2\n','77\n').replace(' 1\n','70\n')
fd2.write(l4)
fd1.close()
fd2.close()
Leider ist das Ergebnis das gleiche, wie ohne die for a in incorrect-Schleife. Ich blicke hier irgendwie die richtige Verschachtelung nicht, oder? Ich habe schon mehrere Varianten ausprobiert… mit sehr mäßigem Erfolg.
Könnt Ihr mir sagen, wie das geht?
Grüße,
Johannes