【发布时间】:2025-12-31 16:00:10
【问题描述】:
我正在尝试从两个不同的文件中读取信息。第一个文件“数据库”是一个包含人名和关于这些人的不同部分信息的文件。每个人(和他们的信息)都用行与其他人分开。第二个文件“模板”是带有编号占位符的垃圾邮件模板。我的目标是将数据库的信息部分读入模板中编号的占位符,并为每个人(数据库中的 3 人)输出一个文件。因此,我应该有 3 个输出文件。
database = open("database", "r")
template = open("template", "r")
outfile1 = open("junk1", "w")
outfile2 = open("junk2", "w")
outfile3 = open("junk3", "w")
for line in database:
part = line.split("|")
title = part[0] #replaces #1
firstname = part[1] #replaces #2
lastname = part[2] #replaces #3
address = part[3] #replaces #4
city = part[4] #replaces #5
state = part[5] #replaces #6
zipcode = part[6] #replaces #7
for line in template:
string = line
for r in (("|1|",title),("|2|", firstname),("|3|", lastname),("|4|", address),("|5|", city),("|6|", state),("|7|", zipcode)):
string = string.replace(*r)
outfile1.write(string)
outfile2.write(string)
outfile3.write(string)
outfile1.close()
outfile2.close()
outfile3.close()
database.close()
template.close()
我希望它输出到 3 个不同的文件。它目前输出 3 个文件,但每个模板输出仅包含最后一行的名称和信息。我需要第一个文件有模板填写第一人的信息,第二个文件包含第二个人的信息,第三个文件包含第三个人的信息。
【问题讨论】:
-
你必须使用
for line, output in zip(database, [outfile1, outfile2, outfile2])并在这个for循环中运行模板 -
你能澄清一下“在这个for循环中运行模板吗?”
-
你可以使用字符串格式而不是
replace()-"{0}, Hello {1}".format(title, firstname) -
为什么要更改替换部分?这似乎工作正常。我不确定您的建议是什么...似乎 outfile1.write(string) 的放置可能是问题所在,就好像它没有正确地遍历数据库行一样。
-
它是 cmets 的地方 - 不是解决方案。在评论中,我们可以建议与问题无关的更改。
标签: python