logo

Psaní CSV souborů v Pythonu

CSV (hodnoty oddělené čárkami) je jednoduchý formát souboru používaný k ukládání tabulkových dat, jako je tabulka nebo databáze. Soubor CSV ukládá tabulková data (čísla a text) v prostém textu. Každý řádek souboru je datovým záznamem. Každý záznam se skládá z jednoho nebo více polí oddělených čárkami. Použití čárky jako oddělovače polí je zdrojem názvu tohoto formátu souboru. Pojďme diskutovat o tom, jak zapisovat do souborů CSV v Pythonu.

Psaní CSV souborů v Pythonu

Níže jsou uvedeny způsoby, jakými můžeme psát CSV soubory v Krajta :

  • Zápis do souborů CSV pomocí Pythonu csv.DictWriter()
  • Zápis do souborů CSV pomocí csv.writer()
    • Napište soubor CSV s oddělovačem potrubí
    • Pište soubory CSV s uvozovkami
    • Psaní souborů CSV s vlastním znakem citace
    • Použití escapechar v CSV Writer

Python zápis do CSV pomocí DictWriter()

Tato třída vrací objekt Writer, který mapuje slovníky na výstupní řádky.



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

Parametry:

  • csvfile: Objekt souboru s metodou write().
  • názvy polí: Posloupnost klíčů, které určují pořadí, ve kterém by měly být hodnoty ve slovníku předány.
  • restval (volitelné): Určuje hodnotu, která se má zapsat, pokud ve slovníku chybí klíč v názvech polí.
  • extrasaction (volitelné): Pokud klíč není v názvech polí nalezen, volitelný parametr extrasaction označuje, jakou akci provést. Pokud je nastaveno na zvýšení, bude vyvolána hodnota ValueError.
  • dialekt (volitelné): Název dialektu, který se má použít.

V tomto příkladu jsou záznamy studentů uloženy jako slovníky a pomocí těchto slovníků je vygenerován soubor CSV s názvem university_records.csv. Třída `csv.DictWriter` se používá k zápisu názvů polí jako záhlaví a datových řádků slovníku do souboru 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)>

>

>

Výstup:

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>

Zápis do souborů CSV pomocí csv.writer()

csv.writer>třída slouží k vložení dat do souboru CSV. Tato třída vrací objekt Writer, který je zodpovědný za převod dat uživatele na oddělený řetězec. Objekt csvfile by měl být otevřen pomocínewline=''>jinak nebudou znaky nového řádku uvnitř polí v uvozovkách interpretovány správně.

Syntax: csv.writer(csvfile, dialekt=’excel’, **fmtparams)

Parametry:

  • csvfile: Objekt souboru s metodou write().
  • dialekt (volitelné): Název dialektu, který se má použít.
  • fmtparams (volitelné): Parametry formátování, které přepíší parametry zadané v dialektu.

V tomto příkladu je vytvořen soubor CSV s názvem university_records.csv a naplněn záznamy studentů. Soubor obsahuje pole jako Name, Branch, Year a CGPA. Do souboru CSV se zapisují datové řádky pro jednotlivé studenty, za nimiž následují názvy polí.

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

>

>

Výstup:

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>

Vytváření souborů CSV v Pythonu s oddělovačem potrubí

V tomto příkladu je vygenerován soubor CSV s názvem data_pipe_delimited.csv s datovými řádky oddělenými svislou čarou (|>) oddělovače. Soubor obsahuje informace o jménech jednotlivců, jejich věku a městech.

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

>

>

Výstup:

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

Pište soubory CSV s nabídkami

V tomto příkladu je vygenerován soubor CSV s názvem students_data.csv s každým polem uzavřeným do dvojitých uvozovek. Soubor obsahuje informace o jménech studentů, pobočkách, letech a skóre 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}'>)>

java scan.nextstring
>

>

Výstup:

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

Psaní souborů CSV s vlastním znakem nabídky

V tomto příkladu je vytvořen soubor CSV s názvem students_data.csv s poli oddělenými svislou čarou (|>) oddělovače a uzavřené ve vlnovkách (~>). Data zahrnují jména studentů, obory, roky a skóre 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}'>)>

>

>

Výstup:

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

Použití escapechar v CSV

V tomto příkladu je vygenerován soubor CSV s názvem students.csv s poli oddělenými svislou čarou (|>) oddělovače. Thequotechar>je nastaveno na dvojité uvozovky ('>) aescapechar>je nastaveno na zpětné lomítko (>), což umožňuje správné zacházení s uvozovkami v datech.

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

>

>

Výstup:

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>