2017-08-01 9 views
0

Der Versuch, eine CSV-Datei mit einem Wörterbuch zu füllen.Wörterbuch in CSV

Hier ist der Code, den ich versuche:

import csv 

my_dict = {'App 1': 'App id1', 'App 2': 'App id2', 'App 3': 'App id3'} 
with open('test.csv', 'w') as f: 
    fieldnames = ['Application Name', 'Application ID'] 
    writer = csv.DictWriter(f, fieldnames=fieldnames) 
    writer.writeheader() 
    writer.writerows(my_dict) 

Mit diesem Code es wurde nur eine CSV-Datei mit dem Header zu erstellen.

Ich bin für einen ähnlichen Ausgang suchen:

enter image description here

+2

Netter Versuch! Mach weiter! Gibt es eine Frage, die Sie beantwortet haben müssen? –

+0

Mögliches Duplikat von [Wie schreibe ich ein Python-Wörterbuch in eine CSV-Datei?] (Https://stackoverflow.com/questions/10373247/how-do-i-write-a-python-dictionary-to-a-csv (Datei) –

+0

Danke Alan. Die Antwort von @Moses hat mir sehr geholfen. – Raj

Antwort

3

Sie müssen Ihre Daten in eine Liste von dicts neu zu formatieren, so dass Schlüssel und Werte aus der alten dict als Werte gegenüber den Feldnamen platziert neue dicts:

my_dict = {'App 1': 'App id1', 'App 2': 'App id2', 'App 3': 'App id3'} 
with open('test.csv', 'w') as f: 
    fieldnames = ['Application Name', 'Application ID'] 
    writer = csv.DictWriter(f, fieldnames=fieldnames) 
    writer.writeheader() 
    data = [dict(zip(fieldnames, [k, v])) for k, v in my_dict.items()] 
    writer.writerows(data) 
+0

Danke! Das hat mein Problem fast gelöst. Allerdings bekomme ich nach jedem Eintrag aus meinem Wörterbuch eine leere Zeile in der CSV-Datei. Gibt es einen Workaround dafür? – Raj

+1

@Raj Ziemlich häufiges Problem, siehe: https://stackoverflow.com/questions/3348460/csv-file-written-with-python-has-blank-lines-between-each-row –

+0

Vielen Dank @Moses – Raj

0

Sie können dies auch tun, ohne einen Import und weniger Codezeilen:

my_dict = {'App 1': 'App id1', 'App 2': 'App id2', 'App 3': 'App id3'} 
with open('test.csv', 'w') as f: 
    f.write('Application Name, Application ID\n') 
    for key in my_dict.keys(): 
     f.write("%s,%s\n"%(key,my_dict[key]))