Seite 1 von 1

Mehere Wörter in Datei ändern

Verfasst: Mittwoch 11. Mai 2011, 11:10
von recnice
Hallo,
ich habe folgendes Problem:
Ich lese folgende Datei ein:
la la le lu
python nervt
c++ ist klasse
la la lu
Jetzt möchte ich "python" durch fortran ersetzen und den geänderten text in eine neue datei speichern. Dies klappt auch.

Also zweites möche ich "c++" durch "python" ersetzten, der Code sieht nun so aus:

Code: Alles auswählen

[code]# -*- coding: utf-8 -*-
import string
import re

fname    = "datei.txt"
new_name = "fortran" 
new_name2 = "python"

infile  = open(fname,"r")
outfile = open(fname[:5] + "_changed.txt",'a')  

for line in infile:
   aenderung1 = line.replace("python",new_name)
   #aenderung2 = line.replace("c++",new_name2) 
   outfile.write(aenderung1)  

for line in infile:
   aenderung2 = line.replace("c++",new_name2) 
   outfile.write(aenderung2)  

infile.close()
[/code]

Es funktioniert aber nicht, c++ wird nicht geändert. Kann mir jemand helfen??

Re: Mehere Wörter in Datei ändern

Verfasst: Mittwoch 11. Mai 2011, 11:25
von EyDu
Hallo.

Nach der ersten Schleife bist du am Ende der Datei angelangt, der Inhalt der zweiten wird also niemals ausgeführt. Du musst daher entweder die Datei noch einmal neu öffnen (schau dir auf jeden Fall das with-Statement an, das macht einiges einfacher) oder du springst zurück zum Dateianfang. Und noch einfacher: du machst beide Änderungen in einer Schleife:

Re: Mehere Wörter in Datei ändern

Verfasst: Mittwoch 11. Mai 2011, 11:30
von recnice
Die Idee mit alles in einer schleife hatte ich auch schon:

Code: Alles auswählen

# -*- coding: utf-8 -*-
import string
import re

fname    = "datei.txt"
new_name = "fortran" 
new_name2 = "python"

infile  = open(fname,"r")
outfile = open(fname[:5] + "_changed.txt",'a')  

for line in infile:
   aenderung1 = line.replace("python",new_name)
   aenderung2 = line.replace("c++",new_name2) 
   aenderung = aenderung1 + aenderung2
   outfile.write(aenderung)   
infile.close()
Ergebnis sieht dann so aus:
la la le lu
la la le lu
fortran nervt
python nervt
c++ ist klasse
python ist klasse
la la lu
la la lu

Re: Mehere Wörter in Datei ändern

Verfasst: Mittwoch 11. Mai 2011, 11:34
von EyDu

Code: Alles auswählen

for line in infile:
    aenderung = line.replace("python", new_name).replace("c++", new_name2)
    outfile.write(aenderung)
oder in lang

Code: Alles auswählen

for line in infile:
    aenderung = line.replace("python", new_name)
    aenderung = aenderung.replace("c++", new_name2)
    outfile.write(aenderung)

Re: Mehere Wörter in Datei ändern

Verfasst: Mittwoch 11. Mai 2011, 11:37
von recnice
ja spitze, vielen Dank !!