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