2012-04-14 53 views
2

我想用3.363替換一個特定的數字,例如3.54在多個.inp文件中並保存到位。Python - 在多個文件中替換一個數字

這是我迄今寫的,但我不知道問題出在哪裏! 所以我會很感激,如果有人可以看看這個。

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

有你想這樣做的原因python,而不是簡單的東西,比如'sed'和你的shell? – tpg2114 2012-04-14 22:07:39

+0

啊,我錯過了「C:」部分。我的錯。 – tpg2114 2012-04-14 22:08:38

回答

3

for循環:

for line in ("file"): 

使得line等於'f',然後'i',然後'l',然後'e'

嘗試

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)) 

注意line.replace('3.54', '3.363')是有點危險。例如,它會將13.54更改爲13.363。爲了防止這種情況,請使用正則表達式。

引用工具使用:

+0

如果你有「在文件(文件名).readlines()行」,並不會調用你的變量文件,它會正常工作。 – j13r 2012-04-14 22:10:23

+0

非常感謝您的回答,但請原諒我的無知(我是新手),如何使用正則表達式,因爲我的.inp文件可能也有這些數字。 – Esan 2012-04-14 22:19:43

+0

@Esan:我已編輯帖子以顯示使用're.sub'。你的線條是什麼樣的?正則表達式可能需要tweeking,例如,數字'3.54'後面緊跟一個字母,而不是空格或逗號... – unutbu 2012-04-14 22:25:08

相關問題