使用Python替换文件中的字符串+数字

时间:2014-09-15 07:35:20

标签: python regex string

我有一个文件,我想在其中找到并替换表达式中的数字,如下所示

...
.param vthna=0.466
.param vthnb=0.466
...

例如,我想将原始".param vthna=0.466"更改为".param vthna=0.467",其中0.467是随机生成的数字,同时保持其他行不变(即.param vthnb = 0.466的行仍然是保持不变)。

我这样做的代码是

for line in f_in:
line=re.sub(r".param vthna=[-+]?\d*\.\d+|\d+",".param vthna="+vthna_s,line)
f_out.write(line)
f_in.close()
f_out.close()

但最后我的文件中的所有数字/浮点数都被目标表达式替换。也就是说,.param vthna=0.466的行变为.param vthna=0.467, but。param vthnb = 0.466 becomes。param vthnb = .param vthna = 666..param vthna = 666 `。有人能为我提供解决这个问题的任何线索吗?

2 个答案:

答案 0 :(得分:0)

我并不完全理解你的问题,但我试图捕食它...如果那不是你的问题,我道歉......

所以首先打开2个文件流,f_in和f_out:

 f_in = open("input.file")
 f_out = open("output.file", "w")

然后您遍历输入文件并查找“.param vth = xxx”行并将其替换为随机生成的数字

 randomlyGenNumber = 0.214 # thats the random number

 for line in f_in:
     line = re.sub(r".param vth=[-+]?\d*\.\d+", ".param vth="+str(randomlyGenNumber), line)
     f_out.write(line)
f_in.close()
f_out.close()

答案 1 :(得分:0)

\.param vthna=.*

你应该使用它。这将替换你的字符串而不会打扰

.param vthnb