2016-11-07 4 views
0

Ich habe eine Liste wie folgt aus:Python 3.X Schreib Wörterbuch aus der Liste Datei

d = [{string1:float1,string2: float2},{string1:float3,string2:float4},...] 

Ich habe versucht:

import json 
with open("outputfile.txt","w") as f: 
    json.dump(d,f) 

dann der gesamte Inhalt ist in einer Zeile wie:

[{string1:float1,string2: float2},{string1:float3,string2:float4},{string1:float5,string2:float6},...] 

was ich will ist für jeden (Schlüssel: Ventil) startet eine Newline, wie

[{string1:float1, 
string2:float2}, 
{string1:float3, 
string2:float4}, 
... 
endstring:endfloat}] 

Wie kann ich das tun? oder ich kann einfach jedes "," zu ", \ n" ersetzen? Die Reihenfolge spielt keine große Rolle, aber wenn möglich, wird ein "sortiertes" Ergebnis geschätzt.

Antwort

2

Per https://docs.python.org/2.7/library/json.html:

json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4, separators=(',', ': ')) 

sollte zur Folge:

{ 
    "4": 5, 
    "6": 7 
} 

Python 3.x Lösung identisch ist.

Beachten Sie die Verwendung von Dumps im Gegensatz zu Dump.

Aktualisiert Lösung:

for dict in d: 
    with open("outputfile.txt","a") as f: 
     json.dump(dict, f) 
     f.write('\n') 

oder

for dict in d: 
    with open("outputfile.txt","a") as f: 
     json.dump(dict, f, indent=4) 
+0

Ich habe versucht: 'für Artikel in d: \t json.dumps (Artikel, sort_keys = True, indent = 4, Abscheider = (‘ , '': ‚)) \t mit open ("output.txt", "w") als i: \t \t json.dump (item, i)' und es nicht ... noch in der funktioniert gleiche Linie – tikael

+0

open ("output.txt", "w") überschreibt die selbe Zeile wiederholt, Sie müssen open ("output.txt", "a") zum Anhängen verwenden. –

+0

Ich habe das gerade mit der Python-Shell getestet und habe folgendes erhalten: ''{\ n" 4 ": 5, \ n" 6 ": 7 \ n}'' Wie Sie sehen, hat json.dumps eine Zeichenfolge für mich erstellt , also müssen Sie nicht durch es oder irgendetwas, nur 'x = json.dumps (...) 'dann' file.write (x) 'oder Ähnliches durchschleifen. –

Verwandte Themen