如何将多个字符串替换并写入文件?

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)

如果这不能解决您的问题,请告诉我。