Šajā apmācībā mēs uzzināsim, kā ar piemēru palīdzību lasīt un ierakstīt CSV failos Python.
CSV (Comma Separated Values) formāts ir viens no vienkāršākajiem un izplatītākajiem veidiem, kā saglabāt tabulas datus. Lai attēlotu CSV failu, tas jāsaglabā ar .csv faila paplašinājumu.
Ņemsim piemēru:
Atverot iepriekš minēto CSV failu, izmantojot teksta redaktoru, piemēram, cildenu tekstu, jūs redzēsiet:
SN, nosaukums, 1. pilsēta, Maikls, Ņūdžersija 2, Džeks, Kalifornija
Kā redzat, CSV faila elementi tiek atdalīti ar komatiem. Šeit ,
ir norobežotājs.
Kā norobežotājs jums var būt jebkura atsevišķa rakstzīme atbilstoši jūsu vajadzībām.
Piezīme: csv moduli var izmantot arī citiem failu paplašinājumiem (piemēram: .txt ), ja vien to saturs ir pareizā struktūrā.
Darbs ar CSV failiem Python
Lai gan mēs varētu izmantot iebūvēto open()
funkciju darbam ar CSV failiem Python, ir īpašs csv
modulis, kas ievērojami atvieglo darbu ar CSV failiem.
Lai varētu izmantot metodes csv
modulī, vispirms ir jāimportē modulis, izmantojot:
import csv
CSV failu lasīšana, izmantojot csv.reader ()
Lai lasītu CSV failu Python, mēs varam izmantot csv.reader()
funkciju. Pieņemsim , ka pašreizējā direktorijā mums ir csv
fails people.csv ar šādiem ierakstiem.
Nosaukums | Vecums | Profesija |
Džeks | 23 | Ārsts |
Millers | 22 | Inženieris |
Lasīsim šo failu, izmantojot csv.reader()
:
1. piemērs: lasiet CSV ar komatu atdalītāju
import csv with open('people.csv', 'r') as file: reader = csv.reader(file) for row in reader: print(row)
Rezultāts
('Vārds', 'Vecums', 'Profesija') ('Džeks', '23', 'Ārsts') ('Millers', '22', 'Inženieris')
Šeit mēs esam atvēruši failu people.csv lasīšanas režīmā, izmantojot:
with open('people.csv', 'r') as file:…
Lai uzzinātu vairāk par failu atvēršanu Python, apmeklējiet vietni: Python File Input / Output
Pēc tam csv.reader()
tiek izmantots faila nolasīšanai, kas atgriež iterējamu reader
objektu.
Pēc tam reader
objekts tiek atkārtots, izmantojot for
cilpu, lai izdrukātu katras rindas saturu.
Iepriekš minētajā piemērā csv.reader()
CSV failiem ar komatu atdalītāju mēs izmantojam funkciju noklusējuma režīmā.
Tomēr funkcija ir daudz pielāgojamāka.
Pieņemsim, ka mūsu CSV fails kā atdalītāju izmantoja cilni . Lai lasītu šādus failus, mēs varam nodot papildu parametrus csv.reader()
funkcijai. Ņemsim piemēru.
2. piemērs: lasiet CSV failu, izmantojot cilnes atdalītāju
import csv with open('people.csv', 'r',) as file: reader = csv.reader(file, delimiter = ' ') for row in reader: print(row)
Ievērojiet izvēles parametru delimiter = ' '
iepriekš minētajā piemērā.
Funkcijas pilnīga sintakse csv.reader()
ir:
csv.reader(csvfile, dialect='excel', **optional_parameters)
Kā redzams no sintakses, funkcijai mēs varam nodot arī dialekta parametru csv.reader()
. Šis dialect
parametrs ļauj mums padarīt funkciju elastīgāku. Lai uzzinātu vairāk, apmeklējiet: CSV failu lasīšana Python.
CSV failu rakstīšana, izmantojot csv.writer ()
Lai rakstītu uz CSV failu Python, mēs varam izmantot csv.writer()
funkciju.
csv.writer()
Funkcija atgriež writer
objektu, kas pārvērš lietotāja datus uz norobežotu virkni. Šo virkni vēlāk var izmantot, lai ierakstītu CSV failos, izmantojot writerow()
funkciju. Ņemsim piemēru.
3. piemērs: rakstīšana uz CSV failu
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"))
Palaižot iepriekš minēto programmu, tiek izveidots protagonist.csv fails ar šādu saturu:
SN, filma, 1. varonis, Gredzenu pavēlnieks, Frodo Baggins 2, Harijs Poters, Harijs Poters
Iepriekš minētajā programmā mēs esam atvēruši failu rakstīšanas režīmā.
Tad mēs katru rindu esam izlaiduši kā sarakstu. Šie saraksti tiek pārveidoti par norobežotu virkni un ierakstīti CSV failā.
4. piemērs: vairāku rindu rakstīšana ar rakstītājrindām ()
Ja mums ir jāieraksta divdimensiju saraksta saturs CSV failā, mēs to varam izdarīt šādi.
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 tofieldnames
- alist
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")
Šeit programma nolasa people.csv no pašreizējā direktorija.
Lai rakstītu uz CSV failu, mums jāizsauc to_csv()
DataFrame funkcija.
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')
Šeit mēs esam izveidojuši DataFrame, izmantojot pd.DataFrame()
metodi. Pēc tam to_csv()
tiek izsaukta šī objekta funkcija, lai ierakstītu person.csv .
Lai uzzinātu vairāk, apmeklējiet:
- Python pandas.read_csv (oficiālā vietne)
- Python pandas.pandas.DataFrame.to_csv (oficiālā vietne)