无法用.replace()方法替换冒号

2024-10-03 19:27:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用双破折号替换.txt文件中冒号的每个实例-“--”

textof = []

with open("myfile.txt") as myfile:
    textof = myfile.readlines()

for line in textof:
    if ":" in line:
        for char in line:
            if char == ":":
                line = line.replace(":", "--")

print(textof[0])

print()返回的字符串与原始.txt中的字符串相同-带有冒号,没有双破折号。不知道我做错了什么。你知道吗


Tags: 文件实例字符串intxtforifline
1条回答
网友
1楼 · 发布于 2024-10-03 19:27:28

你被误导了。替换正在发生,只是没有被保存。当你这么做的时候

line = line.replace(":", " ")

您没有将linetextof改为line,而是创建一个全新的变量,并将名称line改为指向该变量。要更改原件,您需要执行以下操作:

for idx in range(len(textof)):
    textof[idx] = textof[idx].replace(":", " ")

直接改变列表textof。或者你可以花哨地用列表理解的方式来做,这是一种惯用的方式——这不会修改原来的列表,只会创建一个你想要的新列表:

replacedLines = [line.replace(":", " ") for line in textof]

请注意,您还希望将其写入一个文件,并且必须显式地这样做:

with open("myfile.txt", "w") as myfile:
    myfile.writelines(replacedlines)

相关问题 更多 >