4

重複の可能性:
Python でファイル内の行を検索して置換する Python
でテキスト ファイルを変更するにはどうすればよいですか?

プログラムを実行する前に、変更が必要なさまざまなファイルで書き直す必要がある入力ファイルがあります。ここでさまざまなソリューションを試しましたが、どれも機能していないようです。自分のファイルを空のファイルで上書きしてしまう

f = open(filename, 'r+')
text = f.read()
text = re.sub('foobar', 'bar', text)
f.seek(0)
f.write(text)
f.truncate()
f.close()

または、たとえばそのコードでは、プログラムを実行するたびに変更する名前が異なるため、1つのキーワードだけでなく行全体を置き換える必要があります

4

2 に答える 2

3

簡単な方法は、テキストを文字列に読み取り、その文字列を書きたいテキストと連結することです。

infile = open('hey.txt','r+')
content = infile.read()
text = ['foo','bar']
for item in text:
     content +=item  #adds 'foo' on first iteration, 'bar' on second
infile.write(content)
infile.close()

または特定のキーワードを変更するには:

infile = open('hey.txt','r+')
content = infile.read()
table = str.maketrans('foo','bar')
content = content.translate(table)  #replaces 'foo' with 'bar'
infile.write(content)
infile.close()

または行ごとに変更するには、readlines を使用して、各行をリストのインデックスとして参照できます。

infile = open('hey.txt','r+')
content = infile.readlines() #reads line by line and out puts a list of each line
content[1] = 'This is a new line\n' #replaces content of the 2nd line (index 1)
infile.write(content)
infile.close()

問題を解決するための特にエレガントな方法ではないかもしれませんが、関数にラップすることができ、「テキスト」変数は、辞書、リストなどの多くのデータ型になる可能性があります。置換する方法もいくつかありますファイル内の各行は、行を変更するための基準が何であるかに依存します (行内の文字または単語を検索していますか?ファイル内の場所に基づいて行を置き換えようとしているだけですか?)- -これらも考慮すべき事項です。

編集: 3 番目のコード サンプルに引用符を追加

于 2012-12-10T20:16:13.137 に答える
0

醜いですが、このソリューションは最終的に機能します

infile = open('file.txt', 'r+')
content = infile.readlines() #reads line by line and out puts a list of each line
content[1] = "foo \n" #replaces content of the 2nd line (index 1)
infile.close
infile = open('file.txt', 'w') #clears content of file. 
infile.close
infile = open('file.txt', 'r+')
for item in content: #rewrites file content from list 
    infile.write("%s" % item)
infile.close()

助けてくれてありがとう!!

于 2012-12-11T16:39:57.467 に答える