2017-10-29 1 views
-1

Ich habe die Textdatei (input.txt)mit neuem Text und hält den Rest der Datei unverändert

*HEADING 
*NODE, NSET=ALLNODES 
    1, 0.000000e+00, 0.000000e+00, 0.000000e+00 
    2, 2.500000e-01, 0.000000e+00, 0.000000e+00 
*ELEMENT, TYPE=S9R5, ELSET=EB1 
    ... 
    ... 
    ... 
    ... 
** 
* END OF FILE 

Mein Ziel ist es, alle Linien zwischen den Zeilen ersetzen (*ELEMENT, TYPE=S9R5, ELSET=EB1) und (**) mit neuen Zeilen.

und den Rest der Datei unverändert lassen. Jede Lösung mit: open('input.txt', 'w') as f1: würde alles in der Datei löschen und die neuen zwei Zeilen schreiben und das ist nicht das, was ich brauche.

+0

Willkommen bei SO. Leider ist dies kein Diskussionsforum, Tutorial oder Code Writing Service. Bitte nehmen Sie sich die Zeit, [ask] und die darin enthaltenen Links zu lesen. Sie sollten einige Zeit damit verbringen, sich durch das Tutorial (https://docs.python.org/3/tutorial/index.html) zu arbeiten und die Beispiele zu üben. Es wird Ihnen eine Einführung in die Werkzeuge geben, die Python zu bieten hat, und Sie können sogar Ideen für die Lösung Ihres Problems bekommen. – wwii

+0

https://stackoverflow.com/questions/17140886/how-to-search-and-replace-text-in-a-file-using-python – wwii

Antwort

1

Dies sollte die Arbeit machen:

text = open("input.txt", "r").read() 
with open("input.txt", "w") as f: 
    for line in text.split("\n"): 
     if "line 1" in line: 
      line = line.replace("line 1", "line 3") 
     elif "line 2" in line: 
      line = line.replace("line 2", "line 4") 
     f.write(line + "\n") 

ich Ihre file in eine file namens input.txt kopiert und die code genau getestet und es gab das Recht output, (dh die file in der vorgesehenen Weise geändert), so hoffentlich klappt es auch für dich!

+0

Sorry Joe, aber ich habe die Frage geändert, weil ich den Inhalt nicht kenne die Linien, die ich ersetzen muss. Alles, was ich weiß, sind die zwei Zeilen, die ich brauche, um alle Daten dazwischen zu ersetzen. Vielen Dank –

Verwandte Themen