Dictionary in CSV schreiben in Python

Rayven Esplanada 17 Februar 2021
Dictionary in CSV schreiben in Python

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:

CSV-Datei

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:

CSV-Datei-Array

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.

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

Verwandter Artikel - Python CSV

Verwandter Artikel - Python Dictionary