CSV (door komma's gescheiden waarden) is een eenvoudig bestandsformaat dat wordt gebruikt om tabelgegevens op te slaan, zoals een spreadsheet of database. CSV-bestand slaat tabelgegevens (cijfers en tekst) op in platte tekst. Elke regel van het bestand is een gegevensrecord. Elk record bestaat uit een of meer velden, gescheiden door komma's. Het gebruik van de komma als veldscheidingsteken is de bron van de naam voor dit bestandsformaat. Laten we bespreken hoe u naar CSV-bestanden kunt schrijven in Python.
CSV-bestanden schrijven in Python
Hieronder staan de manieren waarop we kunnen schrijven CSV-bestanden in Python :
- Schrijf naar CSV-bestanden met Python csv.DictWriter()
- Schrijf naar CSV-bestanden met csv.writer()
- Schrijf een CSV-bestand met een Pipe Delimiter
- Schrijf CSV-bestanden met aanhalingstekens
- CSV-bestanden schrijven met aangepast aanhalingsteken
- Escapechar gebruiken in CSV-schrijver
Python Schrijf naar CSV met DictWriter()
Deze klasse retourneert een writer-object dat woordenboeken toewijst aan uitvoerrijen.
Syntaxis: csv.DictWriter(csvfile, veldnamen, restval=, extrasaction=’raise’, dialect=’excel’, *args, **kwds)
Parameters:
- csv-bestand: Een bestandsobject met de methode write().
- veldnamen: Een reeks sleutels die de volgorde aangeven waarin waarden in het woordenboek moeten worden doorgegeven.
- restval (optioneel): Specificeert de waarde die moet worden geschreven als het woordenboek een sleutel in veldnamen mist.
- extrasactie (optioneel): Als een sleutel niet wordt gevonden in veldnamen, geeft de optionele extrasaction-parameter aan welke actie moet worden ondernomen. Als het is ingesteld om te verhogen, wordt er een ValueError verhoogd.
- dialect (optioneel): Naam van het te gebruiken dialect.
In dit voorbeeld worden de studentenrecords opgeslagen als woordenboeken en wordt met behulp van deze woordenboeken een CSV-bestand met de naam universiteit_records.csv gegenereerd. De klasse `csv.DictWriter` wordt gebruikt om de veldnamen als headers en de woordenboekgegevensrijen naar het CSV-bestand te schrijven.
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)> |
>
>
Uitgang:
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>
Schrijven naar CSV-bestanden met behulp van csv.writer()
csv.writer>klasse wordt gebruikt om gegevens in het CSV-bestand in te voegen. Deze klasse retourneert een writer-object dat verantwoordelijk is voor het converteren van de gegevens van de gebruiker naar een gescheiden tekenreeks. Een csvfile-object moet worden geopend metnewline=''>Anders worden nieuweregeltekens in de aanhalingstekens niet correct geïnterpreteerd.
Syntaxis: csv.writer(csvbestand, dialect=’excel’, **fmtparams)
Parameters:
- csv-bestand: Een bestandsobject met de methode write().
- dialect (optioneel): Naam van het te gebruiken dialect.
- fmtparams (optioneel): Opmaakparameters die de in het dialect gespecificeerde parameters overschrijven.
In dit voorbeeld wordt een CSV-bestand met de naam universiteit_records.csv gemaakt en gevuld met studentenrecords. Het bestand bevat velden zoals Naam, Filiaal, Jaar en CGPA. De gegevensrijen voor individuele studenten worden naar het CSV-bestand geschreven, gevolgd door de veldnamen.
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)> |
>
>
Uitgang:
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>
CSV-bestanden maken in Python met Pipe Delimiter
In dit voorbeeld wordt een CSV-bestand met de naam data_pipe_delimited.csv gegenereerd met gegevensrijen gescheiden door pipe (|>) scheidingstekens. Het bestand bevat informatie over de namen, leeftijden en steden van personen.
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}'>)> |
>
>
Uitgang:
Name|Age|City Alice|25|New York Bob|30|Los Angeles Charlie|35|Chicago>
Schrijf CSV-bestanden met aanhalingstekens
In dit voorbeeld wordt een CSV-bestand met de naam studenten_data.csv gegenereerd, waarbij elk veld tussen dubbele aanhalingstekens staat. Het bestand bevat informatie over de namen van studenten, branches, jaren en CGPA-scores.
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}'>)> |
c# voorbeeldcode
>
>
Uitgang:
'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'>
CSV-bestanden schrijven met aangepast citaatteken
In dit voorbeeld wordt een CSV-bestand met de naam studenten_data.csv gemaakt met velden gescheiden door een pipe (|>) scheidingstekens en tussen tildes (~>). De gegevens omvatten studentennamen, branches, jaren en CGPA-scores.
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}'>)> |
>
>
Uitgang:
~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>
Escapechar gebruiken in CSV
In dit voorbeeld wordt een CSV-bestand met de naam studenten.csv gegenereerd met velden gescheiden door een pipe (|>) scheidingstekens. Dequotechar>is ingesteld op dubbele aanhalingstekens ('>) en deescapechar>is ingesteld op backslash (>), waardoor een juiste verwerking van offertes binnen de gegevens mogelijk is.
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}'>)> |
>
>
Uitgang:
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>