所以我目前正在学习邮件合并并收到了一个挑战。这个想法是打开一个名称文件,读取当前行的名称,然后将其替换为字母并将该字母另存为新项目。
我认为使用 for 循环是个好主意。
打开文件> for 循环> 将名称附加到列表> 循环列表并替换等
除非我尝试将名称实际附加到列表中,否则我会得到:
['Aang\nZuko\nAppa\nKatara\nSokka\nMomo\nUncle Iroh\nToph']
我使用的代码是:
invited_names = []
with open ("./Input/Names/invited_names.txt") as names:
invited_names.append(names.read())
for item in invited_names:
new_names = [str.strip("\n") for str in invited_names]
print(new_names)
曾尝试替换 \n 和现在的 .strip,但我无法删除 \n。有什么想法吗?
编辑:不确定是否有帮助,但名称的 .txt 文件如下所示:
Aang
Zuko
Appa
Katara
Sokka
Momo
Uncle Iroh
Toph
答案 0 :(得分:0)
如您所见,read() 仅返回您的邀请名称.txt 文件中的一个巨大字符串。但是,您可以使用 readlines() 返回一个包含每一行字符串的列表(感谢 codeflush.dev 的评论)。然后使用 extend() 方法将此列表添加到另一个列表 invited_names。
同样,您同时使用了for 循环 和列表解析。因此,您多次运行相同的列表理解代码。因此,您可以切断其中任何一个。但我更喜欢你应该保持列表理解,因为它很有效。
试试这个代码:
invited_names = []
with open ("./Input/Names/invited_names.txt") as names:
invited_names.extend(names.readlines()) # <--
new_names = [str.strip("\n") for str in invited_names]
print(new_names)