Scrivi il dizionario in CSV in Python

Rayven Esplanada 30 marzo 2021
Scrivi il dizionario in CSV in Python

Questo tutorial introdurrà come scrivere una variabile del dizionario in un file csv in Python.

Usa il modulo csv per scrivere un dizionario in un file CSV in Python

Il modulo Python csv contiene strumenti e funzioni per manipolare i file csv. Ci sono due semplici metodi da usare per scrivere dizionari in un file csv: writer() e DictWriter().

Questi due metodi hanno funzioni simili; l’unica differenza è che DictWriter() è una classe wrapper che contiene più funzioni.

Facciamo un primo esempio con un singolo dizionario con poche coppie chiave-valore:

dct = {"Name": "John", "Age": "23", "Country": "USA"}

Nel primo esempio, usiamo writer() per accedere a un nuovo file csv e inserirvi il dizionario.

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

Poiché il tipo di accesso al file è w, il contenuto del file csv dct.csv sarà sovrascritto dalle nuove modifiche. Se il file non esiste, verrà creato automaticamente nella stessa directory.

Il contenuto del file CSV produrrà:

File CSV

Poiché esiste una sola voce di dizionario, il layout del file csv contiene tutte le chiavi nella prima colonna ei valori sono nella seconda colonna.

Esempio di utilizzo di un array di dizionari

Quello era un esempio di un singolo dizionario. E se volessi inserire più dizionari in un unico file CSV?

Per questo esempio, la funzione DictWriter() verrà utilizzata per scrivere in un file csv. Anche il layout CSV del primo esempio dovrebbe essere modificato poiché ci sono più valori con le stesse chiavi.

La prima riga dovrebbe contenere le etichette delle chiavi e le righe conseguenti conterranno i valori per ciascuna voce del dizionario.

Innanzitutto, dichiara un array di dizionari con gli stessi valori di chiave.

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"},
]

Ora scrivi questo array di dizionari in un file csv usando il modulo csv e DictWriter().

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

Al parametro fieldnames in DictWriter() è assegnata la variabile labels, che è un array dell’array di etichette chiave dei dizionari.

È anche utile esercitarsi nel wrapping del codice che manipola i file con la gestione delle eccezioni (try ... except). Questo nel caso in cui si verifichino errori esterni o incompatibilità riguardo al processo di scrittura del file.

Produzione:

Array di file CSV

In sintesi, il modulo csv contiene tutte le funzioni e gli strumenti necessari per scrivere un dizionario in un file csv. Usando le funzioni writer() e DictWriter() si possono usare entrambe facilmente per ottenere questo risultato.

È anche utile notare di avvolgere i blocchi che manipolano i file con la gestione delle eccezioni per garantire che gli errori di I/O vengano rilevati prima che si rompa qualcosa.

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

Articolo correlato - Python CSV

Articolo correlato - Python Dictionary