HOWTO · Python
Dictionary in CSV schreiben in Python
Es wird demonstriert, wie man in Python ein Dictionary in eine csv-Datei schreibt
In diesem Tutorial wird gezeigt, wie man in Python eine Dictionaryvariable in eine csv-Datei schreiben kann.
Verwenden Sie das csv-Modul, um ein Dictionary in eine CSV-Datei in Python zu schreiben
Das Python-Modul csv enthält Werkzeuge und Funktionen, um csv-Dateien zu manipulieren. Es gibt zwei einfache Methoden, um Wörterbücher in eine csv-Datei zu schreiben: writer() und DictWriter().
Diese beiden Methoden haben ähnliche Funktionen; der einzige Unterschied ist, dass DictWriter() eine Wrapper-Klasse ist, die mehr Funktionen enthält.
Lassen Sie uns ein erstes Beispiel mit einem einzelnen Dictionary mit ein paar Schlüssel-Wert-Paaren einstellen:
dct = {"Name": "John", "Age": "23", "Country": "USA"}
Im ersten Beispiel verwenden wir writer(), um auf eine neue csv-Datei zuzugreifen und das Dictionary in diese einzufügen.
import csv
dct = {"Name": "John", "Age": "23", "Country": "USA"}
with open("dct.csv", "w") as f:
writer = csv.writer(f)
for k, v in dct.items():
writer.writerow([k, v])
Da der Dateizugriffstyp w ist, wird der Inhalt der csv-Datei dct.csv durch die neuen Änderungen überschrieben. Wenn die Datei nicht vorhanden ist, wird sie automatisch im gleichen Verzeichnis erstellt.
Der Inhalt der csv-Datei wird ausgegeben:
Da es nur einen Dictionaryeintrag gibt, enthält das Layout der csv-Datei alle Schlüssel in der ersten Spalte, und die Werte stehen in der zweiten Spalte.
Beispiel für die Verwendung eines Arrays von Dictionaries
Das war ein Beispiel für ein einzelnes Dictionary. Was ist, wenn Sie mehrere Dictionaries in eine einzelne csv-Datei einfügen möchten?
Für dieses Beispiel wird die Funktion DictWriter() verwendet, um in eine csv-Datei zu schreiben. Das CSV-Layout des ersten Beispiels müsste ebenfalls geändert werden, da es mehrere Werte mit denselben Schlüsseln gibt.
Die erste Zeile sollte die Schlüsselbezeichnungen enthalten, und die nachfolgenden Zeilen würden die Werte für jeden Dictionaryeintrag enthalten.
Deklarieren Sie zunächst ein Array von Dictionaries mit den gleichen Schlüsselwerten.
dct_arr = [
{"Name": "John", "Age": "23", "Country": "USA"},
{"Name": "Jose", "Age": "44", "Country": "Spain"},
{"Name": "Anne", "Age": "29", "Country": "UK"},
{"Name": "Lee", "Age": "35", "Country": "Japan"},
]
Schreiben Sie nun dieses Array von Dictionaries mit dem Modul csv und DictWriter() in eine csv-Datei.
import csv
labels = ["Name", "Age", "Country"]
dct_arr = [
{"Name": "John", "Age": "23", "Country": "USA"},
{"Name": "Jose", "Age": "44", "Country": "Spain"},
{"Name": "Anne", "Age": "29", "Country": "UK"},
{"Name": "Lee", "Age": "35", "Country": "Japan"},
]
try:
with open("csv_dct.csv", "w") as f:
writer = csv.DictWriter(f, fieldnames=labels)
writer.writeheader()
for elem in dct_arr:
writer.writerow(elem)
except IOError:
print("I/O error")
Dem Parameter fieldnames in DictWriter() wird die Variable labels zugewiesen, die ein Array mit den Schlüsselbezeichnungen des Arrays von Dictionaries ist.
Es ist auch gut zu üben, Code, der Dateien manipuliert, mit einer Ausnahmebehandlung zu umhüllen (try ... except). Dies ist für den Fall, dass es externe Fehler oder Inkompatibilitäten beim Schreiben von Dateien geben sollte.
Ausgabe:
Zusammengefasst enthält das Modul csv alle notwendigen Funktionen und Werkzeuge, um ein Dictionary in eine csv-Datei zu schreiben. Mit den beiden Funktionen writer() und DictWriter() kann dies einfach erreicht werden.
Es ist auch gut zu beachten, Blöcke, die Dateien manipulieren, mit Ausnahmebehandlung zu umhüllen, um sicherzustellen, dass IO-Fehler abgefangen werden, bevor etwas kaputt geht.