我想在为其添加新名称后将我的列表保存到文件中。主要问题是,如果我保存使用:
money = [['Amber', '87000000000'], ['Theo', '15'], ['Duncan', '0'], ['Russell', '0'], ['Lauren', '0'], ['Sandra', '0']]
finaldata = ""
for row in money:
data = " ".join(map(str,row))
finaldata = str(finaldata) + str(data) + "\n"
f1 = open('bank.txt', 'w')
print >> f1, finaldata
f1.close()
with open("bank.txt") as textFile:
money = [line.split() for line in textFile]
它在列表中创建了一个额外的位置。在保存列表之前,它看起来应该是应该的,因此我知道该问题与将列表保存到文件的代码有关。
结果应该像这样保存列表:
[['Amber', '87000000000'], ['Theo', '15'], ['Duncan', '0'], ['Russell', '0'], ['Lauren', '0'], ['Sandra', '0']]
但是打印出来就像这样:
[['Amber', '87000000000'], ['Theo', '15'], ['Duncan', '0'], ['Russell', '0'], ['Lauren', '0'], ['Sandra', '0'], []]
我尝试了另一种方法(没有" \ n"),这也省去了错误。与之前的尝试一样,名称正确地添加到列表中但使用代码保存:
money = [['Amber', '87000000000'], ['Theo', '15'], ['Duncan', '0'], ['Russell', '0'], ['Lauren', '0'], ['Sandra', '0']]
finaldata = ""
for row in money:
data = " ".join(map(str,row))
finaldata = str(finaldata) + str(data)
f1 = open('bank.txt', 'w')
print >> f1, finaldata
f1.close()
with open("bank.txt") as textFile:
money = [line.split() for line in textFile]
使列表看起来像这样:
[['Amber', '87000000000Theo', '15Duncan', '0Russell', '0Lauren', '0Sandra', '0']]
任何人都可以帮我理解我哪里错了吗?我已经在这段代码上工作了好几个小时了。
答案 0 :(得分:0)
诀窍是避免数组末尾的额外\n
。
money = [['Amber', '87000000000'], ['Theo', '15'], ['Duncan', '0'], ['Russell', '0'], ['Lauren', '0'], ['Sandra', '0']]
finaldata = []
for row in money:
data = " ".join(map(str,row))
finaldata.append(str(data))
f1 = open('bank.txt', 'w')
print >> f1, "\n".join(finaldata)
f1.close()
请注意,我使用join
将finaldata
数组链接到一个包含\n
的字符串。