如何将多个字符串替换并写入文件?
How to replace and write multiple strings into a file?
我正在将数据从原始文件复制到新文件,并为我要更改的字符串随机分配新值。出于某种原因,我的代码只会替换我的一个字符串。我已经尝试编写对应于四个 f.write 命令的四个不同的 filedata.replace 行,但这行不通。我还尝试在一个命令中提供 filedata.replace 多个参数,但这也会产生问题。
import numpy as np
import random
import math
import shutil
for i in range (1,5):
shutil.copy('template.par', 'a.par')
a = str(random.uniform(0.00000000000000, 0.0001)) #sigma0
b = str(random.uniform(0.00000000000000, 1)) #sigmaslope
c = str(random.uniform(0.05000000000000, 0.1)) #viscosity
d = str(random.uniform(0.00000000000000, 0.00001)) #aspectratio
f = open('a.par','r')
filedata = f.read()
f.close()
newdata = filedata.replace("6.3661977237e-4", a)
newdata = filedata.replace("0.0", b)
newdata = filedata.replace("0.05", c)
newdata = filedata.replace("1e-5", d)
f = open('a.par','w')
f.write(newdata)
f.close()
错误在以下部分:
newdata = filedata.replace("6.3661977237e-4", a)
newdata = filedata.replace("0.0", b)
newdata = filedata.replace("0.05", c)
newdata = filedata.replace("1e-5", d)
最后一行将始终用 filedata
覆盖 newdata
。所以,之前所有的filedata.replace()
都没有用了。
您可以通过将 filedata
替换为 newdata
来修复它:
newdata = filedata.replace("6.3661977237e-4", a)
newdata = newdata.replace("0.0", b)
newdata = newdata.replace("0.05", c)
newdata = newdata.replace("1e-5", d)
如果这不能解决您的问题,请告诉我。
我正在将数据从原始文件复制到新文件,并为我要更改的字符串随机分配新值。出于某种原因,我的代码只会替换我的一个字符串。我已经尝试编写对应于四个 f.write 命令的四个不同的 filedata.replace 行,但这行不通。我还尝试在一个命令中提供 filedata.replace 多个参数,但这也会产生问题。
import numpy as np
import random
import math
import shutil
for i in range (1,5):
shutil.copy('template.par', 'a.par')
a = str(random.uniform(0.00000000000000, 0.0001)) #sigma0
b = str(random.uniform(0.00000000000000, 1)) #sigmaslope
c = str(random.uniform(0.05000000000000, 0.1)) #viscosity
d = str(random.uniform(0.00000000000000, 0.00001)) #aspectratio
f = open('a.par','r')
filedata = f.read()
f.close()
newdata = filedata.replace("6.3661977237e-4", a)
newdata = filedata.replace("0.0", b)
newdata = filedata.replace("0.05", c)
newdata = filedata.replace("1e-5", d)
f = open('a.par','w')
f.write(newdata)
f.close()
错误在以下部分:
newdata = filedata.replace("6.3661977237e-4", a)
newdata = filedata.replace("0.0", b)
newdata = filedata.replace("0.05", c)
newdata = filedata.replace("1e-5", d)
最后一行将始终用 filedata
覆盖 newdata
。所以,之前所有的filedata.replace()
都没有用了。
您可以通过将 filedata
替换为 newdata
来修复它:
newdata = filedata.replace("6.3661977237e-4", a)
newdata = newdata.replace("0.0", b)
newdata = newdata.replace("0.05", c)
newdata = newdata.replace("1e-5", d)
如果这不能解决您的问题,请告诉我。