我有这段代码:
count = -1
with open("text.txt", "r") as f:
content = f.readlines()
for line in content:
if line.startswith(" <Vertex>"):
count += 1
line = line.replace(str(line), str(" <Vertex> " + str(count) + " {\n"))
continue
else:
pass
with open("text2.txt", "w") as f:
f.writelines(content)
当它运行时,它应该用" <Vertex>"
替换任何以" <Vertex> 0 {"
开头的行,或者计数所在的任何数字。
当我运行它时,它执行正常,但是当我打开新的text2.txt
文件时,它与text.txt
完全相同。
我做错了什么?
答案 0 :(得分:3)
您不是回写line
,而是为变量行指定一个新的字符串引用。您需要按如下方式写回内容数组:
count = -1
with open('text.txt', 'r') as f:
content = f.readlines()
for index, line in enumerate(content):
if line.startswith(' <Vertex>'):
count += 1
content[index] = line.replace(str(line), str(" <Vertex> " + str(count) + " {\n"))
with open('text2.txt', 'w') as f:
f.writelines(content)
看看它是否适合你
您可能还需要考虑改进逻辑,因为这只适用于非常具体的模式。
例如,您可以将line.startswith(" <Vertex>")
替换为line.contains('<Vertex>')
,因为假设您使用XML,这应该会给您相同的结果