【发布时间】:2016-03-26 14:10:05
【问题描述】:
我正在编写一个函数,允许用户在特定行(在文件中)查找内容,并替换该行中的部分内容,并将其重新写入同一行的文件。
def editPlayer():
print "What information would you like to edit?"
print "1- Forname"
print "2- Surname"
print "3- Email address"
choice = int(raw_input(""))
f = open("persons.txt","r+")
for i in range(2): # number of type of information
if choice == i: #check if choice equal current running of i
line[choice-1] = str(raw_input("Enter new information: ")) #modify choice-1's element in line
lineStr = line[0] + ";" + line[1] + ";" + line[2] #makes list in a string
上述代码有效,即如果用户要编辑玩家的电子邮件地址,他的输入将更改line 中的第三个元素,而lineStr 将包含所有信息,包括修改后的电子邮件地址以相同的顺序.
我被困在我需要将lineStr 重新写入我的文件中与原始文件在同一行的地方。文件看起来像这样
Joe;Bloggs;j.bloggs@anemailaddress.com
Sarah;Brown;s.brown@anemailaddress.com
出现问题是因为在写的时候
f.write(lineStr)
文件的第一行将被替换,所以如果我要修改 Sarah 的第二个名字(到 Stack)并将其写入文件,文件看起来像
Sarah;Stack;s.brown@anemailaddress.com
Sarah;Brown;s.brown@anemailaddress.com
而不是它的外观,即:
Joe;Bloggs;j.bloggs@anemailaddress.com
Sarah;Stack;s.brown@anemailaddress.com
有人能引导我走向正确的方向吗?任何帮助,将不胜感激。谢谢
【问题讨论】:
-
我会选择
csv模块,请参阅stackoverflow.com/questions/16020858/…。 -
我同意@alexce - 如果您可以使用 csv.DictReader 和 csv.DictWriter 读取和写入数据,您可能可以获得更多控制权,但您的基本问题已经得到解答,可以完成但是不明智