我有一个文件,我想在其中找到并替换表达式中的数字,如下所示
...
.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
`。有人能为我提供解决这个问题的任何线索吗?
答案 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