2012-04-14 11 views
2

複数の.inpファイルで特定の数値3.54を3.363と置き換えて保存したいと思います。Python - 複数のファイルの中の数字を置き換える

これは私が今までに書いたものですが、どこに問題があるのか​​わかりません! 誰かがこれを見ることができたら、私はそれを感謝します。 forループ

for i in range(1, 126): 
file = 'C:/inp/' + str(i) +'.inp' 
o2 = open(name=file, readOnly=False) 
for line in ("file"): 
    file.write(line.replace('3.54', '3.363')) 
file.close() 
+0

あなたがそれをやりたい理由があります'sed'やシェルのようなシンプルなものではないのですか? – tpg2114

+0

ああ、私は "C:"の部分を見逃していました。私の悪い。 – tpg2114

答えて

3

ザ:

for line in ("file"): 

は次いでその後'f'に等しいline'i''l''e'なります。

line.replace('3.54', '3.363')は少し危険であることを

import fileinput 
import sys 
import re 

filenames = ['C:/inp/%d.inp'%i for i in range(1, 126)] 
for line in fileinput.input(filenames, inplace = True, 
          backup = '.bak'):   
    sys.stdout.write(re.sub(r'\b3.54\b', '3.363', line)) 

注意してみてください。たとえば、13.54から13.363に変更されます。これを防ぐには、regexを使用してください。使用するツールへ

参考文献:

+0

"ファイル内の行(ファイル名).readlines()"が存在し、変数ファイルを呼び出さない場合、正常に動作します。 – j13r

+0

お返事ありがとうございます。しかし私の無知を許してください(私は初心者です)、どうすれば正規表現を使用することができますか。 – Esan

+0

@エサン:私は 're.sub'の使用方法を示すために投稿を編集しました。あなたのラインはどのように見えますか?例えば正規表現では '3.54 'の後ろにスペースやカンマではなく文字がついていれば、つまらないことがあるかもしれません。 – unutbu

関連する問題