2017-12-04 3 views
0

新しい名前を追加した後、そのリストをファイルに保存したいと考えています。主な問題は、以下を使用して保存する場合です。2-dリストを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] 

リストに余分な位置が作成されます。リストが保存される前に、それは正確に見えるので、問題はファイルにリストを保存するコードと関係していることがわかります。これも私が(「\ nを」なし)別の方法を試してみました

[['Amber', '87000000000'], ['Theo', '15'], ['Duncan', '0'], ['Russell', '0'], ['Lauren', '0'], ['Sandra', '0'], []] 

と:

結果は、このようなリスト保存してください:

[['Amber', '87000000000'], ['Theo', '15'], ['Duncan', '0'], ['Russell', '0'], ['Lauren', '0'], ['Sandra', '0']] 

をしかし、その代わりに、このようにそれを印刷しますそれは間違って保存されます。名前の前にしようと同じように正しくリストに追加されますが、コードを使用して保存されます。

[['Amber', '87000000000Theo', '15Duncan', '0Russell', '0Lauren', '0Sandra', '0']] 

誰もが私が間違っているつもりですどこ私が理解するのに役立ちます:

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] 

は、このようなリストを見てします?私は今このコードを数時間作業しています。

+0

スクリプトの最後に余分な改行( "\ n")を取り除く必要があります。それ以外の場合は、空のエントリがあります。 – Heikki

答えて

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

は、私は\nと単一の文字列にチェーンへjoinfinaldata配列を利用することを確認します。

関連する問題