logo

Skriva CSV-filer i Python

CSV (kommaseparerade värden) är ett enkelt filformat som används för att lagra tabelldata, till exempel ett kalkylblad eller en databas. CSV-fil lagrar tabelldata (siffror och text) i vanlig text. Varje rad i filen är en datapost. Varje post består av ett eller flera fält, separerade med kommatecken. Användningen av kommatecken som fältavgränsare är källan till namnet för detta filformat. Låt oss diskutera hur man skriver till CSV-filer i Python.

Skriva CSV-filer i Python

Nedan är sätten vi kan skriva på CSV-filer i Pytonorm :



  • Skriv till CSV-filer med Python csv.DictWriter()
  • Skriv till CSV-filer med csv.writer()
    • Skriv CSV-fil med Pipe Delimiter
    • Skriv CSV-filer med citattecken
    • Skriva CSV-filer med anpassade citattecken
    • Använder escapechar i CSV-skrivare

Python Skriv till CSV med DictWriter()

Denna klass returnerar ett writer-objekt som mappar ordböcker på utdatarader.

Syntax: csv.DictWriter(csvfile, fieldnames, restval=, extrasaction=’raise’, dialect=’excel’, *args, **kwds)

Parametrar:



  • csvfil: Ett filobjekt med metoden write().
  • fältnamn: En sekvens av nycklar som identifierar i vilken ordning värden i ordboken ska skickas.
  • vilotid (valfritt): Anger värdet som ska skrivas om ordboken saknar en nyckel i fältnamn.
  • extrasaction (valfritt): Om en nyckel inte hittas i fältnamn, indikerar den valfria extrasaction-parametern vilken åtgärd som ska vidtas. Om den är inställd på att höja kommer ett ValueError att höjas.
  • dialekt (valfritt): Namn på dialekten som ska användas.

I det här exemplet lagras studentposter som ordböcker och en CSV-fil med namnet university_records.csv genereras med hjälp av dessa ordböcker. Klassen `csv.DictWriter` används för att skriva fältnamnen som rubriker och ordboksdataraderna till CSV-filen.

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)>

>

>

Produktion:

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>

Skriv till CSV-filer med csv.writer()

csv.writer>klass används för att infoga data i CSV-filen. Denna klass returnerar ett writer-objekt som är ansvarigt för att konvertera användarens data till en avgränsad sträng. Ett csvfile-objekt ska öppnas mednewline=''>annars kommer nyradstecken i de citerade fälten inte att tolkas korrekt.

Syntax: csv.writer(csvfile, dialect='excel', **fmtparams)

Parametrar:

  • csvfil: Ett filobjekt med metoden write().
  • dialekt (valfritt): Namn på dialekten som ska användas.
  • fmtparams (valfritt): Formateringsparametrar som kommer att skriva över de som anges i dialekten.

I det här exemplet skapas en CSV-fil med namnet university_records.csv och fylls i med studentposter. Filen innehåller fält som Name, Branch, Year och CGPA. Dataraderna för enskilda elever skrivs till CSV-filen, följt av fältnamnen.

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)>

>

>

Produktion:

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>

Skapa CSV-filer i Python med Pipe Delimiter

I det här exemplet genereras en CSV-fil med namnet data_pipe_delimited.csv med datarader separerade med pipe (|>) avgränsare. Filen innehåller information om individers namn, ålder och städer.

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}'>)>

>

>

Produktion:

Name|Age|City Alice|25|New York Bob|30|Los Angeles Charlie|35|Chicago>

Skriv CSV-filer med citat

I det här exemplet genereras en CSV-fil med namnet students_data.csv med varje fält omgivet av dubbla citattecken. Filen innehåller information om elevernas namn, grenar, årtal och CGPA-poäng.

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}'>)>

tecken till int java
>

>

Produktion:

'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'>

Skriva CSV-filer med anpassad citationstecken

I det här exemplet skapas en CSV-fil med namnet students_data.csv med fält separerade med pipe (|>) avgränsare och inneslutna i tildes (~>). Uppgifterna inkluderar studentnamn, grenar, årtal och CGPA-poäng.

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}'>)>

>

>

Produktion:

~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>

Använder escapechar i CSV

I det här exemplet genereras en CSV-fil med namnet students.csv med fält separerade med pipe (|>) avgränsare. Dequotechar>är inställd på dubbla citattecken ('>) och denescapechar>är inställd på snedstreck (>), vilket möjliggör korrekt hantering av offerter inom data.

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}'>)>

>

>

Produktion:

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>