0

names.txt に次のようなテキスト ファイルがあります。

My name is alex
My name is samuel

サミュエルをボクサーに置き換えたい

私のコードは次のとおりです。

#!/usr/bin/python

import re

f = open("names.txt",'r+')
for line in f:
  if re.search(r'samuel',line,re.I):
     print line
     m=f.write(line.replace("samuel",'boxer'))
f.close()

Print line は行を正しく印刷していますが、names.txt で置換が行われていません。誰か手がかりがあれば教えて

4

1 に答える 1

3

ここで正規表現を使用するのはやり過ぎです。.replace()置換テキストがまったく存在しない場合は行を変更せずに返すため、テストする必要さえありません。

ファイル内のデータをその場で置き換えるには、fileinputモジュールを使用する方が簡単です:

import fileinput

for line in fileinput.input('names.txt', inplace=True):
    line = line.replace('samuel', 'boxer')
    print line.strip()
于 2013-05-10T15:44:19.483 に答える