0Pricing
Python Academy · Lezione

Scrittura dei CSV con csv.DictWriter

Scriva dati strutturati in formato CSV utilizzando DictReader e DictWriter.

Scrittura dei CSV con csv.DictWriter è una lezione Python Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Python Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Python Academy include 4 lezioni in totale.

Introduzione

csv.writer e csv.DictWriter scrivono i dati Python in formato CSV, gestendo automaticamente virgolette e delimitatori.

Nozioni di base su csv.writer

csv.writer(f).writerow(row) scrive una singola riga. writerows(rows) ne scrive diverse.
import csv, io
buf = io.StringIO()
writer = csv.writer(buf)
writer.writerow(['name', 'age'])
writer.writerow(['Alice', 30])
print(buf.getvalue())

Comportamento delle virgolette

Per impostazione predefinita, i campi contenenti virgole o virgolette vengono racchiusi automaticamente tra virgolette. quoting=csv.QUOTE_ALL racchiude ogni campo tra virgolette.
import csv, io
buf = io.StringIO()
writer = csv.writer(buf, quoting=csv.QUOTE_ALL)
writer.writerow(['Alice', 'NYC, NY', 30])
print(buf.getvalue())

csv.DictWriter

DictWriter scrive i dict come righe. Specifichi fieldnames. writeheader() scrive le intestazioni delle colonne.
import csv, io
buf = io.StringIO()
fields = ['name', 'age']
writer = csv.DictWriter(buf, fieldnames=fields)
writer.writeheader()
writer.writerow({'name': 'Alice', 'age': 30})
print(buf.getvalue())

writerows() per più righe

writer.writerows(list_of_rows) è più efficiente che chiamare writerow() in un ciclo.
import csv, io
buf = io.StringIO()
writer = csv.DictWriter(buf, fieldnames=['x','y'])
writer.writeheader()
writer.writerows([{'x':1,'y':2},{'x':3,'y':4}])
print(buf.getvalue())

Delimitatore personalizzato

csv.writer(f, delimiter='\t') scrive valori separati da tabulazioni (TSV).
import csv, io
buf = io.StringIO()
writer = csv.writer(buf, delimiter='\t')
writer.writerow(['a', 'b', 'c'])
print(repr(buf.getvalue()))

Parametro extrasaction

DictWriter(f, fieldnames, extrasaction='ignore') ignora silenziosamente le chiavi aggiuntive nel dict invece di sollevare ValueError.
import csv, io
buf = io.StringIO()
w = csv.DictWriter(buf, fieldnames=['name'], extrasaction='ignore')
w.writeheader()
w.writerow({'name': 'Alice', 'extra': 'ignored'})
print(buf.getvalue())

Scrittura su un file reale

with open('out.csv','w',newline='',encoding='utf-8') as f: — utilizzi sempre newline='' e specifichi la codifica.
import csv, tempfile, os
tmp = tempfile.mktemp(suffix='.csv')
with open(tmp, 'w', newline='') as f:
    csv.writer(f).writerows([[1,2],[3,4]])
print(open(tmp).read())
os.unlink(tmp)

Aggiunta di dati a un CSV

open(file, 'a') aggiunge dati al file. Faccia attenzione a non riscrivere l'intestazione quando aggiunge dati.
import csv, io
buf = io.StringIO()
w = csv.writer(buf)
w.writerow(['x', 'y'])
print(buf.getvalue())

Scritture di grandi dimensioni in streaming

Scriva una riga alla volta: non accumuli tutte le righe in memoria prima della scrittura.
import csv, io
buf = io.StringIO()
writer = csv.writer(buf)
for i in range(5):
    writer.writerow([i, i**2])
print(buf.getvalue())

Test di round-trip

Scriva i dati in un CSV e poi li rilegga per verificarne la correttezza.
import csv, io
original = [{'name':'Alice','age':'30'},{'name':'Bob','age':'25'}]
buf = io.StringIO()
w = csv.DictWriter(buf, fieldnames=['name','age'])
w.writeheader()
w.writerows(original)
buf.seek(0)
read_back = list(csv.DictReader(buf))
print(read_back == original)

Verifica rapida

Quale metodo di DictWriter scrive i nomi delle colonne come prima riga?

Riepilogo

csv.writer: writerow/writerows. DictWriter: writeheader + writerow/writerows. Apra sempre i file con newline=''. Utilizzi extrasaction='ignore' per dict flessibili.

Continui

Continui così! Passi alla lezione successiva.

Domande Frequenti

La lezione «Scrittura dei CSV con csv.DictWriter» è gratuita?

Sì — il testo completo di «Scrittura dei CSV con csv.DictWriter» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Python Academy, passa a CoddyKit PRO. Il corso Python Academy include 4 lezioni in totale.

Cosa imparerò in «Scrittura dei CSV con csv.DictWriter»?

Scriva dati strutturati in formato CSV utilizzando DictReader e DictWriter. Eserciti Python Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Python Academy?

Non è richiesta alcuna esperienza precedente. Python Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Scrittura dei CSV con csv.DictWriter»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Python Academy?

Sì. Ogni lezione Python Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Codifica e decodifica JSON
  2. Gestione delle strutture JSON annidate
  3. Lettura dei CSV con csv.reader
  4. Scrittura dei CSV con csv.DictWriter
← Torna a Python Academy