私はPythonで2つの関数を書いています。 私はreplace()を実行すると、replacementという名前のデータ構造を調べます。それはキーを受け取り、文書を反復し、文書内の単語とキーが一致すると、その単語を値で置き換えます。Pythonの検索と置換
これは、テキストファイルの内容によっては、 '停止'と '一時停止'の変更が '停止'に変更されているためですそれはファイルを通過し、いくつかの単語が変更され、元に戻って変更されます(つまり、変更は行われません)
私はreplace2()を実行すると、テキスト文書から各単語を取り出し、交換。そうであれば、私はそれを置き換えます。私が気づいたことは、これを実行すると、サスペンド(部分文字列 "ended"を含む)が "サスペンド"として終わるのですか?
テキストファイルを繰り返し処理する簡単な方法はありますか?見つかった場合は、単語を一度だけ変更しますか?私はreplace2()が欲しいものをやっていると思いますが、私はフレーズを失っていますが、split()関数を使ったときと同じように、部分文字列を受け取ってはいけません。
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' }
それが始まった後、試合はわずか40分で雨による終了。雨のために が中断されました。
を、単語が(「40」と言うことができます)であることを、私は40のすべての出現を望んで、テキストで4回現れた場合「40」に変更されました。 単語を一度だけ変更することは、replace()関数を使用しているときに起こりました。これは単語 '40'を'40 'に置き換え、もう一度元の' 40 'に戻ります。 – user1031551
私の答えを更新しました.. – SuperSaiyan
ここでの主な問題は、句読点が考慮されていないことです。単語の後にピリオドまたはカンマがある場合、置換されません。 – rawbeans