为什么名称仅被列表中的第一个名称替换?

问题描述 投票:0回答:1
with open("./Input/Names/invited_names.txt") as f:
    names = f.readlines()

with open("./Input/Letters/starting_letter.txt", mode="r+") as f:
    letter = f.read()
    for name in names:
        letter = letter.replace("[name]", name)
        f.write(letter)

我正在尝试将字符串 [name] 替换为列表中存储的实际名称。问题是在所有迭代中只有名字替换了 [name] 字符串。

python-3.x file file-writing
1个回答
0
投票

你的问题不是很清楚,如果你提供一下文件内容会更有帮助。

我认为你的问题是,当你初始化字母时,它会存储为字符串,并且当你使用

.replace()
方法时,所有实例都会在循环的第一次迭代中被替换。在下一次迭代中,所有实例都已被替换,因此
.replace()
方法将不执行任何操作。

.replace()
函数有一个重载,您可以指定要替换的最大出现次数,因此您应该使用
letter = letter.replace("[name]", name)
而不是
letter = letter.replace("[name]", name, 1)

© www.soinside.com 2019 - 2024. All rights reserved.