Ich habe zwei Funktionen in Python geschrieben. Wenn ich replace() ausführe, sieht es sich die Datenstruktur mit dem Namen replacements an. Es nimmt den Schlüssel, durchläuft das Dokument und wenn es einem Schlüssel im Dokument entspricht, wird das Wort durch den Wert ersetzt.Python suchen und ersetzen
Jetzt scheint es, was passiert, weil ich auch die umgekehrte ('gestoppt' Änderungen an 'suspended' und 'suspended' Änderungen an 'gestoppt', je nachdem, was in der Textdatei ist), scheint es, dass als es geht durch die Datei, einige Wörter werden geändert, und dann wieder geändert (dh, so dass keine Änderungen vorgenommen werden)
wenn ich replace2() ausführen Ich nehme jedes Wort aus dem Textdokument, und sehen, ob dies ein Schlüssel ist Ersatz. Wenn es ist, ersetze ich es. Was ich jedoch bemerkt habe, wenn ich das ausführe, suspendiert (enthält die Teilzeichenfolge "ended") endet als "susfinished"?
Gibt es eine einfachere Möglichkeit, die Textdatei zu durchlaufen und das Wort nur einmal zu ändern, falls gefunden? Ich denke, dass replace2() tut, was ich will, obwohl ich Phrasen verliere, aber es scheint auch Teilstrings aufzunehmen, was es nicht tun sollte, da ich die split() Funktion benutzt habe.
def replace():
fileinput = open('tennis.txt').read()
out = open('tennis.txt', 'w')
for i in replacements.keys():
fileinput = fileinput.replace(i, replacements[i])
print(i, " : ", replacements[i])
out.write(fileinput)
out.close
def replace2():
fileinput = open('tennis.txt').read()
out = open('tennis.txt', 'w')
#for line in fileinput:
for word in fileinput.split():
for i in replacements.keys():
print(i)
if word == i:
fileinput = fileinput.replace(word, replacements[i])
out.write(fileinput)
out.close
replacements = {
'suspended' : 'stopped',
'stopped' : 'suspended',
'due to' : 'because of',
'ended' : 'finished',
'finished' : 'ended',
'40' : 'forty',
'forty' : '40',
'because of' : 'due to' }
das Spiel endete wegen gerade einmal 40 Minuten regnen, nachdem er gestartet. Es war wegen Regen ausgesetzt.
in diesem Fall, wenn das Wort (können sagen, „40“) 4-mal im Text erscheint, möchte ich alle Vorkommen von 40 zu sein geändert zu "vierzig". Meine Referenz, das Wort nur einmal zu ändern, war die replace() -Funktion. Dies ersetzt das Wort "40" bis "vierzig" und dann wieder scheint es auf das ursprüngliche "40" zurück. – user1031551
Aktualisierte meine Antwort .. – SuperSaiyan
Das Hauptproblem hier ist, dass Interpunktion nicht berücksichtigt wird. Wenn Sie nach einem Wort einen Punkt oder ein Komma haben, wird es nicht ersetzt. – rawbeans