Python CSV: CSV fájlok olvasása és írása

Ebben az oktatóanyagban megtanuljuk, hogyan kell olvasni és írni CSV fájlokba a Pythonban példák segítségével.

A CSV (vesszővel elválasztott értékek) formátum az egyik legegyszerűbb és leggyakoribb módszer a táblázatos adatok tárolására. A CSV fájl képviseletéhez el kell menteni a .csv fájlkiterjesztéssel.

Vegyünk egy példát:

Ha megnyitja a fenti CSV fájlt egy szövegszerkesztővel, például fenséges szöveggel, akkor a következőt látja:

 SN, név, 1. város, Michael, New Jersey 2, Jack, Kalifornia 

Mint láthatja, a CSV fájl elemeit vesszők választják el egymástól. Itt ,van egy határoló.

Bármelyik karakter lehet elválasztója az igényeinek megfelelően.

Megjegyzés: A csv modul más fájlkiterjesztésekhez is használható (például: .txt ), amennyiben azok tartalma megfelelő szerkezetű.

CSV fájlokkal való munka Python-ban

Bár a beépített open()funkciót használhatnánk a CSV-fájlokkal való Python-kezeléshez, van egy dedikált csvmodul, amely sokkal könnyebbé teszi a CSV-fájlokkal való munkát.

Mielőtt felhasználhatnánk a metódusokat a csvmodulba, először importálnunk kell a modult:

 import csv 

CSV fájlok olvasása a csv.reader () használatával

CSV fájl Pythonban történő olvasásához használhatjuk a csv.reader()függvényt. Tegyük fel, hogy az aktuális könyvtárban van egy people.csvcsv nevű fájl a következő bejegyzésekkel.

Név Kor Szakma
Jack 23 Orvos
Molnár 22. Mérnök

Olvassuk el ezt a fájlt csv.reader():

1. példa: Olvassa el a CSV-t vesszővel elválasztva

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

Kimenet

 („Név”, „Kor”, „Szakma”) („Jack”, „23”, „Orvos”) („Miller”, „22”, „Mérnök”) 

Itt megnyitottuk a people.csv fájlt olvasási módban a következők használatával:

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

Ha többet szeretne megtudni a fájlok Python-ban történő megnyitásáról, keresse fel a következő címet: Python File Input / Output

Ezután csv.reader()a fájlt olvassa el, amely egy iterálható readerobjektumot ad vissza .

Az readerobjektumot ezután egy forhurok segítségével iterálják az egyes sorok tartalmának kinyomtatásához.

A fenti példában csv.reader()alapértelmezett módban vesszőhatárolóval rendelkező CSV-fájlokhoz használjuk a funkciót.

A funkció azonban sokkal testreszabhatóbb.

Tegyük fel, hogy CSV-fájlunk a tab- ot használta elválasztóként. Az ilyen fájlok olvasásához opcionális paramétereket adhatunk át a csv.reader()függvénynek. Vegyünk egy példát.

2. példa: Olvassa el a CSV fájlt Tab Elhatárolóval

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

Vegye figyelembe az opcionális paramétert delimiter = ' 'a fenti példában.

A csv.reader()függvény teljes szintaxisa :

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

Amint a szintaxisból látható, a dialektus paramétert is átadhatjuk a csv.reader()függvénynek. A dialectparaméter lehetővé teszi számunkra, hogy rugalmasabbá tegyük a függvényt. További információ: CSV fájlok olvasása Pythonban.

CSV fájlok írása a csv.writer () használatával

CSV fájlba való íráshoz Pythonban használhatjuk a csv.writer()függvényt.

A csv.writer()függvény egy olyan writerobjektumot ad vissza, amely a felhasználó adatait egy elválasztott karakterlánccá alakítja. Ez a karakterlánc később felhasználható CSV fájlokba való íráshoz a writerow()függvény használatával. Vegyünk egy példát.

3. példa: Írjon CSV fájlba

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

A fenti program futtatásakor létrejön egy protagonist.csv fájl a következő tartalommal:

 SN, film, 1. főszereplő, Gyűrűk ura, Frodo Baggins 2, Harry Potter, Harry Potter 

A fenti programban megnyitottuk a fájlt írási módban.

Ezután mindegyik sort listaként adtuk át. Ezeket a listákat átalakítjuk elválasztott karakterláncokká, és beírjuk a CSV fájlba.

4. példa: Több sor írása író sorokkal ()

Ha a kétdimenziós lista tartalmát CSV fájlba kell írnunk, a következőképpen tehetjük meg.

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

Itt a program beolvassa a people.csv fájlt az aktuális könyvtárból.

CSV fájlba történő íráshoz meg kell hívnunk a to_csv()DataFrame függvényét.

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

Itt létrehoztunk egy DataFrame-et a pd.DataFrame()módszer segítségével. Ezután meghívjukto_csv() az objektum függvényét, hogy írjuk a person.csv fájlba .

További információért látogasson el ide:

  • Python pandas.read_csv (hivatalos oldal)
  • Python pandas.pandas.DataFrame.to_csv (hivatalos oldal)

érdekes cikkek...