Come leggere e scrivere file CSV in Python

Il formato CSV è il formato di importazione ed esportazione più comune per database e fogli di calcolo. Questo tutorial fornirà un'introduzione dettagliata ai CSV e ai moduli e alle classi disponibili per leggere e scrivere dati in file CSV. Coprirà anche un esempio funzionante per mostrare come leggere e scrivere dati in un file CSV in Python.

Che cos'è un file CSV?

Un file CSV (valori separati da virgola) consente di salvare i dati in una struttura tabulare con un'estensione .csv. I file CSV sono stati ampiamente utilizzati nelle applicazioni di e-commerce perché sono considerati molto facili da elaborare. Alcune delle aree in cui sono stati utilizzati includono:

  • importazione ed esportazione dei dati dei clienti
  • importazione ed esportazione di prodotti
  • ordini di esportazione
  • esportando report analitici di e-commerce

Moduli Reader e Writer

Il modulo CSV ha diverse funzioni e classi disponibili per leggere e scrivere CSV e includono:

  • funzione csv.reader
  • funzione csv.writer
  • classe csv.Dictwriter
  • classe csv.DictReader

csv.reader

Il modulo csv.reader accetta i seguenti parametri:

  • csvfile: Questo è di solito un oggetto che supporta il protocollo iteratore e di solito restituisce una stringa ogni volta che è __Il prossimo__() il metodo è chiamato.
  • dialetto = 'Excel': Un parametro facoltativo utilizzato per definire un set di parametri specifici per un particolare dialetto CSV.
  • fmtparams: Un parametro facoltativo che può essere utilizzato per sovrascrivere i parametri di formattazione esistenti.

Ecco un esempio di come utilizzare il modulo csv.reader.

importare csv con open ('example.csv', newline = ") come File: reader = csv.reader (File) per riga nel reader: print (row)

modulo csv.writer

Questo modulo è simile al modulo csv.reader e viene utilizzato per scrivere dati in un CSV. Ci vogliono tre parametri:

  • csvfile: Questopuòsii qualsiasi oggetto con a Scrivi() metodo.
  • dialetto = 'Excel': Un parametro facoltativo utilizzato per definire un set di parametri specifici per un determinato CSV.
  • fmtparam: Un parametro facoltativo che può essere utilizzato per sovrascrivere i parametri di formattazione esistenti.

DictReader e DictWriter Classes

DictReader e DictWriter sono classi disponibili in Python per leggere e scrivere in CSV. Sebbene siano simili alle funzioni di lettura e scrittura, queste classi usano oggetti dizionario per leggere e scrivere in file CSV.

DictReader

Crea un oggetto che mappa le informazioni lette in un dizionario le cui chiavi sono date dal fieldnames parametro. Questo parametro è facoltativo, ma quando non specificato nel file, i dati della prima riga diventano le chiavi del dizionario.

Esempio:

importare csv con open ('name.csv') come csvfile: reader = csv.DictReader (csvfile) per riga nel reader: print (row ['first_name'], row ['last_name']) 

DictWriter

Questa classe è simile alla classe DictWriter e fa il contrario, che sta scrivendo dati in un file CSV. La classe è definita come csv.DictWriter(csvfile, fieldnames, restval =", extrasaction = 'rilancio', dialetto = 'Excel', * args, **kwds)

Il fieldnames parametro definisce la sequenza di chiavi che identificano l'ordine in cui i valori nel dizionario sono scritti nel file CSV. A differenza di DictReader, questa chiave non è opzionale e deve essere definita per evitare errori durante la scrittura in un CSV.

Dialetti e formattazione

Un dialetto è una classe helper utilizzata per definire i parametri per uno specifico lettore o scrittore esempio. I dialetti e i parametri di formattazione devono essere dichiarati quando si esegue una funzione di lettura o scrittura.

Ci sono diversi attributi supportati da un dialetto:

  • delimitatore: Una stringa utilizzata per separare i campi. Il valore predefinito è ''.
  • doppia citazione: Controlla come istanze di quotechar apparire in un campo dovrebbe essere citato Può essere vero o falso.
  • EscapeChar: Una stringa utilizzata dallo scrittore per sfuggire al delimitatore Se citando è impostato per QUOTE_NONE.
  • lineterminator: Una stringa utilizzata per terminare le righe prodotte dal file scrittore. Il valore predefinito è '\ R \ n'.
  • quotechar: Una stringa utilizzata per quotare i campi contenenti caratteri speciali. Il valore predefinito è'"'.
  • skipinitialspace: Se impostato su Vero, qualsiasi spazio bianco immediatamente successivo al delimitatore è ignorato.
  • rigoroso: Se impostato suVero, solleva un'eccezione Error on male CSV input.
  • citando: Controlla quando devono essere generate le virgolette durante la lettura o la scrittura in un CSV.

Lettura di un file CSV

Vediamo come leggere un file CSV usando i moduli helper che abbiamo discusso sopra.

Crea il tuo file CSV e salvalo come esempio.csv. Assicurarsi che abbia il .csv estensione e inserire alcuni dati. Qui abbiamo il nostro file CSV che contiene i nomi degli studenti e i loro voti.

Di seguito è riportato il codice per la lettura dei dati nel nostro CSV utilizzando entrambi csv.reader funzione e il csv.DictReader classe.

Lettura di un file CSV con csv.reader

importare csv con open ('example.csv') come File: reader = csv.reader (File, delimiter = ",", quotechar = ",", quoting = csv.QUOTE_MINIMAL) per la riga nel lettore: print (row) 

Nel codice sopra, importiamo il modulo CSV e quindi apriamo il nostro file CSV come File. Quindi definiamo l'oggetto lettore e usiamo il csv.reader metodo per estrarre i dati nell'oggetto. Quindi iteriamo sopra il lettore oggetto e recupera ogni riga dei nostri dati.

Mostriamo i dati letti, stampandone il contenuto sulla console. Abbiamo anche specificato i parametri richiesti come delimitatore, quotechar e quoting.

Produzione

['first_name', 'last_name', 'Grade'] ['Alex', 'Brian', 'B'] ['Rachael', 'Rodriguez', 'A'] ['Tom', 'smith', 'C '] 

Leggere un file CSV con DictReader

Come accennato in precedenza, DictWriter ci consente di leggere un file CSV mappando i dati su un dizionario invece di stringhe come nel caso del csv.reader modulo. Sebbene fieldname sia un parametro facoltativo, è importante avere sempre le colonne etichettate per la leggibilità.

Ecco come leggere un CSV usando la classe DictWriter.

import csv results = [] con open ('example.csv') come File: reader = csv.DictReader (File) per riga nel reader: results.append (row) stampa i risultati 

Per prima cosa importiamo il modulo csv e inizializziamo una lista vuota risultati che useremo per memorizzare i dati recuperati. Quindi definiamo l'oggetto lettore e usiamo il csv.DictReader metodo per estrarre i dati nell'oggetto. Quindi iteriamo sopra il lettore oggetto e recupera ogni riga dei nostri dati.

Infine, aggiungiamo ogni riga all'elenco dei risultati e stampiamo i contenuti sulla console.

Produzione

['Grade': 'B', 'first_name': 'Alex', 'last_name': 'Brian', 'Grade': 'A', 'first_name': 'Rachael', 'last_name': 'Rodriguez ', ' Grade ':' C ',' first_name ':' Tom ',' last_name ':' smith ', ' Grade ':' B ',' first_name ':' Jane ',' last_name ': 'Oscar', 'Grado': 'A', 'first_name': 'Kennzy', 'last_name': 'Tim'] 

Come puoi vedere sopra, usare la classe DictReader è migliore perché fornisce i nostri dati in un formato dizionario che è più facile lavorare con.

Scrivere in un file CSV

Vediamo ora come procedere per scrivere dati in un file CSV usando il csv.writer funzione e il csv.Dictwriter classe discussa all'inizio di questo tutorial.

Scrittura in un file CSV mediante csv.writer

Il codice seguente scrive i dati definiti su example2.csv file.

import csv myData = [["first_name", "second_name", "Grade"], ['Alex', 'Brian', 'A'], ['Tom', 'Smith', 'B']] myFile = apri ('example2.csv', 'w') con myFile: writer = csv.writer (myFile) writer.writerows (myData) print ("Writing complete") 

Per prima cosa importiamo il modulo csv e il scrittore() la funzione creerà un oggetto adatto alla scrittura. Per iterare i dati sulle righe, sarà necessario utilizzare il writerows () funzione.

Ecco il nostro CSV con i dati che abbiamo scritto.

Scrivere su un file CSV usando DictWriter

Scriviamo i seguenti dati a un CSV.

data = ['Grade': 'B', 'first_name': 'Alex', 'last_name': 'Brian', 'Grade': 'A', 'first_name': 'Rachael', 'last_name': 'Rodriguez', 'Grade': 'C', 'first_name': 'Tom', 'last_name': 'smith', 'Grade': 'B', 'first_name': 'Jane', 'last_name ':' Oscar ', ' Grade ':' A ',' first_name ':' Kennzy ',' last_name ':' Tim '] 

Il codice è come mostrato di seguito.

importare csv con open ('example4.csv', 'w') come csvfile: fieldnames = ['first_name', 'last_name', 'Grade'] writer = csv.DictWriter (csvfile, fieldnames = fieldnames) writer.writeheader () writer.writerow ('Grade': 'B', 'first_name': 'Alex', 'last_name': 'Brian') writer.writerow ('Grade': 'A', 'first_name': 'Rachael' , 'last_name': 'Rodriguez') writer.writerow ('Grade': 'B', 'first_name': 'Jane', 'last_name': 'Oscar') writer.writerow ('Grade': ' B ',' first_name ':' Jane ',' last_name ':' Loive ') print ("Writing complete")

Per prima cosa definiamo il fieldnames, che rappresenterà i titoli di ciascuna colonna nel file CSV. Il writerrow () il metodo scriverà su una riga alla volta. Se si desidera scrivere tutti i dati contemporaneamente, si utilizzerà il comando writerrows () metodo.

Ecco come scrivere su tutte le righe contemporaneamente.

importare csv con open ('example5.csv', 'w') come csvfile: fieldnames = ['first_name', 'last_name', 'Grade'] writer = csv.DictWriter (csvfile, fieldnames = fieldnames) writer.writeheader () writer.writerows (['Grade': 'B', 'first_name': 'Alex', 'last_name': 'Brian', 'Grade': 'A', 'first_name': 'Rachael', 'last_name ':' Rodriguez ', ' Grade ':' C ',' first_name ':' Tom ',' last_name ':' smith ', ' Grade ':' B ',' first_name ':' Jane ', 'last_name': 'Oscar', 'Grade': 'A', 'first_name': 'Kennzy', 'last_name': 'Tim']) print ("scrittura completa")

Conclusione

Questo tutorial ha coperto la maggior parte di ciò che è necessario per poter leggere e scrivere correttamente in un file CSV utilizzando le diverse funzioni e classi fornite da Python. I file CSV sono stati ampiamente utilizzati nelle applicazioni software perché sono facili da leggere e gestire e le loro dimensioni ridotte li rendono relativamente veloci da processare e trasferire.

Non esitate a vedere ciò che abbiamo a disposizione per la vendita e per studiare nel mercato, e non esitate a fare domande e fornire il vostro prezioso feedback utilizzando il feed qui sotto.

Impara Python

Impara Python con la nostra guida completa al tutorial su Python, sia che tu stia appena iniziando o che sei un programmatore esperto che cerca di imparare nuove abilità.