CSV (valori separate prin virgulă) este un format de fișier simplu utilizat pentru a stoca date tabulare, cum ar fi o foaie de calcul sau o bază de date. Fișierul CSV stochează date tabelare (numere și text) în text simplu. Fiecare linie a fișierului este o înregistrare de date. Fiecare înregistrare constă din unul sau mai multe câmpuri, separate prin virgule. Utilizarea virgulei ca separator de câmpuri este sursa numelui pentru acest format de fișier. Să discutăm cum să scrieți în fișiere CSV în Python.
Scrierea fișierelor CSV în Python
Mai jos sunt modalitățile prin care putem scrie fișiere CSV în Piton :
- Scrieți în fișiere CSV folosind Python csv.DictWriter()
- Scrieți în fișiere CSV folosind csv.writer()
- Scrieți fișierul CSV cu delimitator de conducte
- Scrieți fișiere CSV cu ghilimele
- Scrierea fișierelor CSV cu caracter personalizat de ghilimele
- Utilizarea escapechar în CSV writer
Python Write în CSV folosind DictWriter()
Această clasă returnează un obiect writer care mapează dicționarele pe rândurile de ieșire.
Sintaxă: csv.DictWriter(csvfile, fieldnames, restval=, extrasaction=’raise’, dialect=’excel’, *args, **kwds)
Parametri:
- csvfile: Un obiect fișier cu metoda write().
- nume de câmp: O secvență de chei care identifică ordinea în care trebuie transmise valorile din dicționar.
- restval (opțional): Specifică valoarea care trebuie scrisă dacă din dicționar îi lipsește o cheie în numele câmpurilor.
- extrasaction (optional): Dacă o cheie nu este găsită în numele câmpurilor, parametrul opțional extrasaction indică ce acțiune trebuie întreprinsă. Dacă este setat să ridice, va fi generată o valoare ValueError.
- dialect (opțional): Numele dialectului care va fi folosit.
În acest exemplu, înregistrările studenților sunt stocate ca dicționare și un fișier CSV numit university_records.csv este generat folosind aceste dicționare. Clasa `csv.DictWriter` este utilizată pentru a scrie numele câmpurilor ca antete și rândurile de date din dicționar în fișierul CSV.
Python3
# 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)> |
>
>
Ieșire:
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>
Scrieți în fișiere CSV folosind csv.writer()
csv.writer>clasa este folosită pentru a insera date în fișierul CSV. Această clasă returnează un obiect writer care este responsabil pentru conversia datelor utilizatorului într-un șir delimitat. Un obiect csvfile ar trebui deschis cunewline=''>în caz contrar, caracterele newline din câmpurile citate nu vor fi interpretate corect.
Sintaxă: csv.writer(csvfile, dialect=’excel’, **fmtparams)
Parametri:
- csvfile: Un obiect fișier cu metoda write().
- dialect (opțional): Numele dialectului care va fi folosit.
- fmtparams (opțional): Formatarea parametrilor care îi vor suprascrie pe cei specificați în dialect.
În acest exemplu, un fișier CSV numit university_records.csv este creat și populat cu înregistrările studenților. Fișierul conține câmpuri precum Nume, Filială, An și CGPA. Rândurile de date pentru elevii individuali sunt scrise în fișierul CSV, urmate de numele câmpurilor.
Python3
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)> |
>
>
Ieșire:
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>
Crearea fișierelor CSV în Python având delimitator de conducte
În acest exemplu, un fișier CSV numit data_pipe_delimited.csv este generat cu rânduri de date separate prin pipe (|>) delimitatori. Fișierul conține informații despre numele persoanelor, vârstele și orașele.
Python3
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}'>)> |
>
>
Ieșire:
Name|Age|City Alice|25|New York Bob|30|Los Angeles Charlie|35|Chicago>
Scrieți fișiere CSV cu ghilimele
În acest exemplu, un fișier CSV numit student_data.csv este generat cu fiecare câmp inclus între ghilimele duble. Fișierul conține informații despre numele studenților, ramurile, anii și scorurile CGPA.
Python3
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}'>)> |
diferența dintre program și script
>
>
Ieșire:
'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'>
Scrierea fișierelor CSV cu caracter personalizat de citare
În acest exemplu, un fișier CSV numit student_data.csv este creat cu câmpuri separate prin pipe (|>) delimitatori și închise în tilde (~>). Datele includ numele studenților, ramurile, anii și scorurile CGPA.
Python3
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}'>)> |
>
>
Ieșire:
~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>
Folosind escapechar în CSV
În acest exemplu, un fișier CSV numit student.csv este generat cu câmpuri separate prin pipe (|>) delimitatori. Thequotechar>este setat la ghilimele duble ('>) siescapechar>este setat la backslash (>), permițând gestionarea corectă a cotațiilor în cadrul datelor.
Python3
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}'>)> |
>
>
Ieșire:
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>