我遇到了一个奇怪的问题。当我试图替换文件中的字符串时。 文件中的相关行是:
lattice parameter A [a.u.]
5.771452243459
我试图将其替换为:
with open(newsys, "r+") as finp:
for line in finp:
# print(line)
if line.startswith("lattice parameter A [a.u.]"):
line = next(finp)
print(line)
print(Alat)
line.replace(line.strip(), str(Alat))
print(line)
最后3个print语句给出:
5.771452243459 # string that will be replaced
6.63717007997785 #value of Alat
5.771452243459 #the line after replace statement
这里出了什么问题?
答案 0 :(得分:1)
replace
方法不会修改现有字符串。相反,它正在创建一个新的。所以在行
line.replace(line.strip(), str(Alat))
您正在创建一个全新的字符串并将其丢弃(因为没有分配给任何变量)。
我会做类似的事情:
with open(newsys, "r+") as finp:
with open('newfile', 'w') as fout:
for line in finp:
# print(line)
if line.startswith("lattice parameter A [a.u.]"):
line = next(finp)
print(line)
print(Alat)
line = line.replace(line.strip(), str(Alat))
print(line)
fout.write(line)