Python CSV: Čítanie a zápis súborov CSV

V tejto príručke sa naučíme, ako pomocou príkladov čítať a zapisovať do súborov CSV v Pythone.

Formát CSV (Comma Separated Values) je jedným z najjednoduchších a najbežnejších spôsobov ukladania tabuľkových údajov. Ak chcete reprezentovať súbor CSV, musí byť tento súbor uložený s príponou .csv .

Uveďme si príklad:

Ak otvoríte vyššie uvedený súbor CSV pomocou textového editora, ako je napríklad vznešený text, uvidíte:

 SN, Meno, Mesto 1, Michael, New Jersey 2, Jack, Kalifornia 

Ako vidíte, prvky súboru CSV sú oddelené čiarkami. Tu ,je oddeľovač.

Ako oddeľovač môžete mať ľubovoľný znak podľa svojich potrieb.

Poznámka: Modul csv je možné použiť aj pre iné prípony súborov (napríklad: .txt ), pokiaľ je ich obsah v správnej štruktúre.

Práca so súbormi CSV v Pythone

Aj keď by sme mohli použiť zabudovanú open()funkciu na prácu so súbormi CSV v Pythone, existuje vyhradený csvmodul, ktorý prácu s CSV súbormi výrazne uľahčuje.

Predtým, ako budeme môcť použiť metódy na csvmodul, je potrebné najskôr importovať modul pomocou:

 import csv 

Čítanie súborov CSV pomocou csv.reader ()

Na načítanie súboru CSV v Pythone môžeme použiť túto csv.reader()funkciu. Predpokladajme, že v aktuálnom adresári máme csvsúbor s názvom people.csv s nasledujúcimi položkami.

názov Vek Profesia
Jack 23 Doktor
Miller 22 Inžinier

Prečítajte si tento súbor pomocou csv.reader():

Príklad 1: Prečítajte si súbor CSV s oddeľovačom čiarky

 import csv with open('people.csv', 'r') as file: reader = csv.reader(file) for row in reader: print(row) 

Výkon

 („Meno“, „Vek“, „Profesia“) („Jack“, „23“, „Doktor“) („Miller“, „22“, „Inžinier“) 

Tu sme otvorili súbor people.csv v režime čítania pomocou:

 with open('people.csv', 'r') as file:… 

Ak sa chcete dozvedieť viac informácií o otváraní súborov v Pythone, navštívte stránku: Vstup / výstup súborov Pythonu

Potom csv.reader()sa znak slúži na čítanie súboru, ktorý vracia iterovateľný readerobjekt.

readerObjekt je potom opakovaná za použitia forslučky vytlačiť obsah každého riadku.

Vo vyššie uvedenom príklade používame csv.reader()funkciu v predvolenom režime pre súbory CSV s oddeľovačom čiarky.

Funkcia je však oveľa prispôsobiteľnejšia.

Predpokladajme, že náš súbor CSV používal kartu ako oddeľovač. Na čítanie takýchto súborov môžeme csv.reader()funkcii odovzdať voliteľné parametre . Zoberme si príklad.

Príklad 2: Čítanie súboru CSV s oddeľovačom tabulátorov

 import csv with open('people.csv', 'r',) as file: reader = csv.reader(file, delimiter = ' ') for row in reader: print(row) 

Všimnite si voliteľný parameter delimiter = ' 'vo vyššie uvedenom príklade.

Úplná syntax csv.reader()funkcie je:

 csv.reader(csvfile, dialect='excel', **optional_parameters) 

Ako vidíte zo syntaxe, do funkcie môžeme odovzdať aj parameter nárečie csv.reader(). Tento dialectparameter nám umožňuje urobiť funkciu flexibilnejšou. Ak sa chcete dozvedieť viac, navštívte: Čítanie súborov CSV v Pythone.

Písanie súborov CSV pomocou csv.writer ()

Na zápis do súboru CSV v Pythone môžeme použiť csv.writer()funkciu.

The csv.writer() function returns a writer object that converts the user's data into a delimited string. This string can later be used to write into CSV files using the writerow() function. Let's take an example.

Example 3: Write to a CSV file

 import csv with open('protagonist.csv', 'w', newline='') as file: writer = csv.writer(file) writer.writerow(("SN", "Movie", "Protagonist")) writer.writerow((1, "Lord of the Rings", "Frodo Baggins")) writer.writerow((2, "Harry Potter", "Harry Potter")) 

When we run the above program, a protagonist.csv file is created with the following content:

 SN,Movie,Protagonist 1,Lord of the Rings,Frodo Baggins 2,Harry Potter,Harry Potter 

In the above program, we have opened the file in writing mode.

Then, we have passed each row as a list. These lists are converted to a delimited string and written into the CSV file.

Example 4: Writing multiple rows with writerows()

If we need to write the contents of the 2-dimensional list to a CSV file, here's how we can do it.

 import csv csv_rowlist = (("SN", "Movie", "Protagonist"), (1, "Lord of the Rings", "Frodo Baggins"), (2, "Harry Potter", "Harry Potter")) with open('protagonist.csv', 'w') as file: writer = csv.writer(file) writer.writerows(csv_rowlist) 

The output of the program is the same as in Example 3.

Here, our 2-dimensional list is passed to the writer.writerows() method to write the content of the list to the CSV file.

Example 5: Writing to a CSV File with Tab Delimiter

 import csv with open('protagonist.csv', 'w') as file: writer = csv.writer(file, delimiter = ' ') writer.writerow(("SN", "Movie", "Protagonist")) writer.writerow((1, "Lord of the Rings", "Frodo Baggins")) writer.writerow((2, "Harry Potter", "Harry Potter")) 

Notice the optional parameter delimiter = ' ' in the csv.writer() function.

The complete syntax of the csv.writer() function is:

 csv.writer(csvfile, dialect='excel', **optional_parameters) 

Similar to csv.reader(), you can also pass dialect parameter the csv.writer() function to make the function much more customizable. To learn more, visit: Writing CSV files in Python

Python csv.DictReader() Class

The objects of a csv.DictReader() class can be used to read a CSV file as a dictionary.

Example 6: Python csv.DictReader()

Suppose we have the same file people.csv as in Example 1.

Name Age Profession
Jack 23 Doctor
Miller 22 Engineer

Let's see how csv.DictReader() can be used.

 import csv with open("people.csv", 'r') as file: csv_file = csv.DictReader(file) for row in csv_file: print(dict(row)) 

Output

 ('Name': 'Jack', ' Age': ' 23', ' Profession': ' Doctor') ('Name': 'Miller', ' Age': ' 22', ' Profession': ' Engineer') 

As we can see, the entries of the first row are the dictionary keys. And, the entries in the other rows are the dictionary values.

Here, csv_file is a csv.DictReader() object. The object can be iterated over using a for loop. The csv.DictReader() returned an OrderedDict type for each row. That's why we used dict() to convert each row to a dictionary.

Notice that, we have explicitly used the dict() method to create dictionaries inside the for loop.

 print(dict(row)) 

Note: Starting from Python 3.8, csv.DictReader() returns a dictionary for each row, and we do not need to use dict() explicitly.

The full syntax of the csv.DictReader() class is:

 csv.DictReader(file, fieldnames=None, restkey=None, restval=None, dialect='excel', *args, **kwds) 

To learn more about it in detail, visit: Python csv.DictReader() class

Python csv.DictWriter() Class

The objects of csv.DictWriter() class can be used to write to a CSV file from a Python dictionary.

The minimal syntax of the csv.DictWriter() class is:

 csv.DictWriter(file, fieldnames) 

Here,

  • file - CSV file where we want to write to
  • fieldnames - a list object which should contain the column headers specifying the order in which data should be written in the CSV file

Example 7: Python csv.DictWriter()

 import csv with open('players.csv', 'w', newline='') as file: fieldnames = ('player_name', 'fide_rating') writer = csv.DictWriter(file, fieldnames=fieldnames) writer.writeheader() writer.writerow(('player_name': 'Magnus Carlsen', 'fide_rating': 2870)) writer.writerow(('player_name': 'Fabiano Caruana', 'fide_rating': 2822)) writer.writerow(('player_name': 'Ding Liren', 'fide_rating': 2801)) 

The program creates a players.csv file with the following entries:

 player_name,fide_rating Magnus Carlsen,2870 Fabiano Caruana,2822 Ding Liren,2801 

The full syntax of the csv.DictWriter() class is:

 csv.DictWriter(f, fieldnames, restval='', extrasaction='raise', dialect='excel', *args, **kwds) 

To learn more about it in detail, visit: Python csv.DictWriter() class

Using the Pandas library to Handle CSV files

Pandas is a popular data science library in Python for data manipulation and analysis. If we are working with huge chunks of data, it's better to use pandas to handle CSV files for ease and efficiency.

Before we can use pandas, we need to install it. To learn more, visit: How to install Pandas?

Once we install it, we can import Pandas as:

 import pandas as pd 

To read the CSV file using pandas, we can use the read_csv() function.

 import pandas as pd pd.read_csv("people.csv") 

Tu program načíta súbor people.csv z aktuálneho adresára.

Aby sme mohli zapisovať do súboru CSV, musíme zavolať to_csv()funkciu DataFrame.

 import pandas as pd # creating a data frame df = pd.DataFrame((('Jack', 24), ('Rose', 22)), columns = ('Name', 'Age')) # writing data frame to a CSV file df.to_csv('person.csv') 

Tu sme pomocou pd.DataFrame()metódy vytvorili dátový rámec . Potom to_csv()sa volá funkcia tohto objektu, písať do person.csv .

Ak sa chcete dozvedieť viac, navštívte:

  • Python pandas.read_csv (oficiálna stránka)
  • Python pandas.pandas.DataFrame.to_csv (oficiálna stránka)

Zaujímavé články...