将两维列表保存到python 2.7中的文件会更改列表吗?

时间:2017-12-04 10:25:20

标签: python-2.7

我想在为其添加新名称后将我的列表保存到文件中。主要问题是,如果我保存使用:

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']]

任何人都可以帮我理解我哪里错了吗?我已经在这段代码上工作了好几个小时了。

1 个答案:

答案 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()

请注意,我使用joinfinaldata数组链接到一个包含\n的字符串。