CSV (valors separats per comes) és un format de fitxer senzill utilitzat per emmagatzemar dades tabulars, com ara un full de càlcul o una base de dades. El fitxer CSV emmagatzema dades tabulars (nombres i text) en text sense format. Cada línia del fitxer és un registre de dades. Cada registre consta d'un o més camps, separats per comes. L'ús de la coma com a separador de camps és la font del nom d'aquest format de fitxer. Parlem de Com escriure a fitxers CSV a Python.
Escriptura de fitxers CSV en Python
A continuació es mostren les maneres en què podem escriure Fitxers CSV en Python :
- Escriu en fitxers CSV amb Python csv.DictWriter()
- Escriu en fitxers CSV amb csv.writer()
- Escriu un fitxer CSV amb un delimitador de canonades
- Escriu fitxers CSV amb cometes
- Escriptura de fitxers CSV amb un caràcter de cita personalitzada
- Utilitzant escapechar a CSV writer
Python Write a CSV mitjançant DictWriter()
Aquesta classe retorna un objecte d'escriptor que mapeja els diccionaris a les files de sortida.
Sintaxi: csv.DictWriter(csvfile, noms de camp, restval=, extrasaction='augment', dialect='excel', *args, **kwds)
Paràmetres:
- csvfile: Un objecte fitxer amb el mètode write().
- noms de camp: Una seqüència de claus que identifiquen l'ordre en què s'han de passar els valors del diccionari.
- restval (opcional): Especifica el valor que s'ha d'escriure si al diccionari li falta una clau als noms de camp.
- extrasacció (opcional): Si no es troba una clau als noms de camp, el paràmetre extrasaction opcional indica quina acció cal dur a terme. Si està configurat per augmentar, es generarà un ValueError.
- dialecte (opcional): Nom del dialecte a utilitzar.
En aquest exemple, els registres dels estudiants s'emmagatzemen com a diccionaris i es genera un fitxer CSV anomenat university_records.csv amb aquests diccionaris. La classe `csv.DictWriter` s'utilitza per escriure els noms dels camps com a capçaleres i les files de dades del diccionari al fitxer CSV.
Python 3
# importing the csv module> import> csv> # my data rows as dictionary objects> mydict>=> [{>'branch'>:>'COE'>,>'cgpa'>:>'9.0'>,>'name'>:>'Nikhil'>,>'year'>:>'2'>},> >{>'branch'>:>'COE'>,>'cgpa'>:>'9.1'>,>'name'>:>'Sanchit'>,>'year'>:>'2'>},> >{>'branch'>:>'IT'>,>'cgpa'>:>'9.3'>,>'name'>:>'Aditya'>,>'year'>:>'2'>},> >{>'branch'>:>'SE'>,>'cgpa'>:>'9.5'>,>'name'>:>'Sagar'>,>'year'>:>'1'>},> >{>'branch'>:>'MCE'>,>'cgpa'>:>'7.8'>,>'name'>:>'Prateek'>,>'year'>:>'3'>},> >{>'branch'>:>'EP'>,>'cgpa'>:>'9.1'>,>'name'>:>'Sahil'>,>'year'>:>'2'>}]> # field names> fields>=> [>'name'>,>'branch'>,>'year'>,>'cgpa'>]> # name of csv file> filename>=> 'university_records.csv'> # writing to csv file> with>open>(filename,>'w'>) as csvfile:> ># creating a csv dict writer object> >writer>=> csv.DictWriter(csvfile, fieldnames>=>fields)> ># writing headers (field names)> >writer.writeheader()> ># writing data rows> >writer.writerows(mydict)> |
>
>
Sortida:
name,branch,year,cgpa Nikhil,COE,2,9.0 Sanchit,COE,2,9.1 Aditya,IT,2,9.3 Sagar,SE,1,9.5 Prateek,MCE,3,7.8 Sahil,EP,2,9.1>
Escriure en fitxers CSV amb csv.writer()
csv.writer>La classe s'utilitza per inserir dades al fitxer CSV. Aquesta classe retorna un objecte d'escriptor que s'encarrega de convertir les dades de l'usuari en una cadena delimitada. S'ha d'obrir un objecte csvfile ambnewline=''>en cas contrari, els caràcters de nova línia dins dels camps citats no s'interpretaran correctament.
Sintaxi: csv.writer(csvfile, dialect='excel', **fmtparams)
Paràmetres:
- csvfile: Un objecte fitxer amb el mètode write().
- dialecte (opcional): Nom del dialecte a utilitzar.
- fmtparams (opcional): Paràmetres de format que sobreescriuran els especificats en el dialecte.
En aquest exemple, es crea un fitxer CSV anomenat university_records.csv i s'omple amb els registres dels estudiants. El fitxer conté camps com ara Nom, Sucursal, Any i CGPA. Les files de dades dels estudiants individuals s'escriuen al fitxer CSV, seguits dels noms dels camps.
Python 3
import> csv> # field names> fields>=> [>'Name'>,>'Branch'>,>'Year'>,>'CGPA'>]> # data rows of csv file> rows>=> [[>'Nikhil'>,>'COE'>,>'2'>,>'9.0'>],> >[>'Sanchit'>,>'COE'>,>'2'>,>'9.1'>],> >[>'Aditya'>,>'IT'>,>'2'>,>'9.3'>],> >[>'Sagar'>,>'SE'>,>'1'>,>'9.5'>],> >[>'Prateek'>,>'MCE'>,>'3'>,>'7.8'>],> >[>'Sahil'>,>'EP'>,>'2'>,>'9.1'>]]> # name of csv file> filename>=> 'university_records.csv'> # writing to csv file> with>open>(filename,>'w'>) as csvfile:> ># creating a csv writer object> >csvwriter>=> csv.writer(csvfile)> ># writing the fields> >csvwriter.writerow(fields)> ># writing the data rows> >csvwriter.writerows(rows)> |
>
>
Sortida:
Name,Branch,Year,CGPA Nikhil,COE,2,9.0 Sanchit,COE,2,9.1 Aditya,IT,2,9.3 Sagar,SE,1,9.5 Prateek,MCE,3,7.8 Sahil,EP,2,9.1>
Creació de fitxers CSV a Python amb un delimitador de canonades
En aquest exemple, es genera un fitxer CSV anomenat data_pipe_delimited.csv amb files de dades separades per pipe (|>) delimitadors. El fitxer conté informació sobre els noms, edats i ciutats de les persones.
Python 3
import> csv> # Define the data to be written to the CSV file> data>=> [> >[>'Name'>,>'Age'>,>'City'>],> >[>'Alice'>,>25>,>'New York'>],> >[>'Bob'>,>30>,>'Los Angeles'>],> >[>'Charlie'>,>35>,>'Chicago'>]> ]> # Specify the file name> filename>=> 'data_pipe_delimited.csv'> # Write data to the CSV file with a pipe delimiter> with>open>(filename,>'w'>, newline>=>'') as csvfile:> >csvwriter>=> csv.writer(csvfile, delimiter>=>'|'>)> >csvwriter.writerows(data)> print>(f>'Data has been written to {filename}'>)> |
>
>
Sortida:
Name|Age|City Alice|25|New York Bob|30|Los Angeles Charlie|35|Chicago>
Escriu fitxers CSV amb cometes
En aquest exemple, es genera un fitxer CSV anomenat students_data.csv amb cada camp entre cometes dobles. El fitxer conté informació sobre els noms, les branques, els anys i les puntuacions CGPA dels estudiants.
Python 3
import> csv> # Define the rows data> rows>=> [> >[>'Nikhil'>,>'COE'>,>'2'>,>'9.0'>],> >[>'Sanchit'>,>'COE'>,>'2'>,>'9.1'>],> >[>'Aditya'>,>'IT'>,>'2'>,>'9.3'>],> >[>'Sagar'>,>'SE'>,>'1'>,>'9.5'>],> >[>'Prateek'>,>'MCE'>,>'3'>,>'7.8'>],> >[>'Sahil'>,>'EP'>,>'2'>,>'9.1'>]> ]> # Specify the file name> filename>=> 'students_data.csv'> # Write the rows data to the CSV file with quotes around each field> with>open>(filename,>'w'>, newline>=>'') as csvfile:> >csvwriter>=> csv.writer(csvfile, quoting>=>csv.QUOTE_ALL)> >csvwriter.writerows(rows)> print>(f>'Data has been written to {filename}'>)> |
r en llenguatge c
>
>
Sortida:
'Nikhil','COE','2','9.0' 'Sanchit','COE','2','9.1' 'Aditya','IT','2','9.3' 'Sagar','SE','1','9.5' 'Prateek','MCE','3','7.8' 'Sahil','EP','2','9.1'>
Escriptura de fitxers CSV amb un caràcter de cita personalitzada
En aquest exemple, es crea un fitxer CSV anomenat students_data.csv amb camps separats per pipe (|>) delimitadors i tancats en tildes (~>). Les dades inclouen els noms dels estudiants, les branques, els anys i les puntuacions CGPA.
Python 3
import> csv> rows>=> [> >[>'Nikhil'>,>'COE'>,>'2'>,>'9.0'>],> >[>'Sanchit'>,>'COE'>,>'2'>,>'9.1'>],> >[>'Aditya'>,>'IT'>,>'2'>,>'9.3'>],> >[>'Sagar'>,>'SE'>,>'1'>,>'9.5'>],> >[>'Prateek'>,>'MCE'>,>'3'>,>'7.8'>],> >[>'Sahil'>,>'EP'>,>'2'>,>'9.1'>]> ]> filename>=> 'students_data.csv'> with>open>(filename,>'w'>, newline>=>'') as>file>:> >writer>=> csv.writer(>file>, quoting>=>csv.QUOTE_NONNUMERIC,> >delimiter>=>'|'>, quotechar>=>'~'>)> >writer.writerows(rows)> print>(f>'Data has been written to {filename}'>)> |
>
>
Sortida:
~Nikhil~|~COE~|~2~|9.0 ~Sanchit~|~COE~|~2~|9.1 ~Aditya~|~IT~|~2~|9.3 ~Sagar~|~SE~|~1~|9.5 ~Prateek~|~MCE~|~3~|7.8 ~Sahil~|~EP~|~2~|9.1>
S'utilitza escapechar en CSV
En aquest exemple, es genera un fitxer CSV anomenat students.csv amb camps separats per pipe (|>) delimitadors. Elquotechar>està establert en cometes dobles ('>) i laescapechar>està configurat com a barra invertida (>), permetent un tractament adequat de les cotitzacions dins de les dades.
Python 3
import> csv> rows>=> [> >[>'Nikhil'>,>'COE'>,>'2'>,>'9.0'>],> >[>'Sanchit'>,>'COE'>,>'2'>,>'9.1'>],> >[>'Aditya'>,>'IT'>,>'2'>,>'9.3'>],> >[>'Sagar'>,>'SE'>,>'1'>,>'9.5'>],> >[>'Prateek'>,>'MCE'>,>'3'>,>'7.8'>],> >[>'Sahil'>,>'EP'>,>'2'>,>'9.1'>]> ]> filename>=> 'students.csv'> with>open>(filename,>'w'>, newline>=>'') as>file>:> >writer>=> csv.writer(>file>, quoting>=>csv.QUOTE_NONE,> >delimiter>=>'|'>, quotechar>=>'''>, escapechar>=>''>)> >writer.writerows(rows)> print>(f>'Data has been written to {filename}'>)> |
>
>
Sortida:
Nikhil|COE|2|9.0 Sanchit|COE|2|9.1 Aditya|IT|2|9.3 Sagar|SE|1|9.5 Prateek|MCE|3|7.8 Sahil|EP|2|9.1>