我正在尝试运行这样的文件:
*sline
1, 1.0, 2.23
2, 1.0, 9.98
3, 2.0, 10.00
*eline
现在我有一个列表,其中包含如下数据:
datalist = [[1,1.0,2.0],[3,2.0,2.0]]
我想把属于datalist的值用id(datalist [] [0])替换文件中的值,如:
*sline
1, 1.0, 2.0
2, 1.0, 9.98
3, 2.0, 2.0
*eline
我尝试使用:
o = open("file","a")
for line in open("trychange.txt"):
line = line.replace("1, 1.0, 2.23","1, 1.0, 2.0")
line = line.replace("3, 2.0, 10.00","3, 2.0, 2.0")
o.write(line + "\n")
o.close()
但它不起作用,它只是添加新值但没有改变旧值。 我怎么处理这个? 谢谢你的帮助
答案 0 :(得分:0)
以"r"
模式打开文件并阅读所有内容。
处理以前在内存中读取的内容。
使用"w"
模式再次打开文件,并使用新数据覆盖上一个文件。
内存数据结构示例:
lines = [
[1, 1.0, 2.23],
[2, 1.0, 9.98],
[3, 2.0, 10.00],
]
key_to_lines_index = {
(1, 1.0): 0, # 0 is an index to the lines array
(2, 1.0): 1, # 1 is an index to the lines array
(3, 2.0): 2, # 2 is an index to the lines array
}
使用上述内存数据结构,您可以轻松应用datalist
项。对于每个datalist
项,您可以使用key_to_lines_index
字典查找必须修改的行,然后修改lines
数组中的相应行。完成后,只需从lines
数组中写出修改后的文件。
如果这个帮助不足以让你完成工作,那么你就很难理解编程的基本原则,所以正确的地方就是这样:https://wiki.python.org/moin/BeginnersGuide/Programmers