2017-06-28 14 views
-1

これはなぜ動作しないのか分かりません。場合によってはword_1wordに、時には空白で_に置き換えられます。Python。さまざまなステップで.replaceと単語を置き換えてください

アイデア?これは私にとっては非常に奇妙に見えます。

f1 = open(file_name, 'r') 
f2 = open(file_name + '.tmp', 'w') 
for line in f1: 
    f2.write(line.replace('word_1', 'word')) 
f1.close() 
f2.close()` 

f1 = open(file_name, 'r') 
f2 = open(file_name + '.tmp', 'w') 
for line in f1: 
    f2.write(line.replace('word_2', 'word')) 
f1.close() 
f2.close() 

f1 = open(file_name, 'r') 
f2 = open(file_name + '.tmp', 'w') 
for line in f1: 
    f2.write(line.replace('_', ' ')) 
f1.close() 
f2.close() 
+0

元のファイルから読み込み、一時ファイルを上書きすることに注意してください。最後の置換のみが出力ファイルに影響します。 – dhke

答えて

4

最初のforループを上書きしています。あなたはこのラインでそれを行うためにそれを言っている

f1 = open(file_name, 'r') 
f2 = open(file_name + '.tmp', 'w') 
for line in f1: 
    new_line = line.replace('word_1', 'word').replace('word_2', 'word').replace('_', ' ') 
    f2.write(new_line) 
f1.close() 
f2.close() 
+0

実際には、これは '.replace( '_'、 '')が最後のもの(word_2の後)である必要があります – PyCV

+0

良いキャッチ、ありがとう、更新済み – Emile

0

:文字列が何であるかを知らなくても、私はあなたがこれをやろうとしていると思う

f2.write(line.replace('_', ' ')) 

それは他のすべての時間を繰り返し強調されているので、置き換えられた名前は毎回同じではありません。私はこれについてコメントしたが、まだ十分な評判はない。お役に立てれば。

関連する問題