Python CSV: CSV-failide lugemine ja kirjutamine

Selles õpetuses õpime näidete abil Pythonis CSV-faile lugema ja nendesse kirjutama.

CSV (Comma Separated Values) vorming on üks lihtsamaid ja levinumaid mooduseid tabeliandmete salvestamiseks. CSV-faili esindamiseks tuleb see salvestada .csv- faililaiendiga.

Võtame näite:

Kui avate ülaltoodud CSV-faili tekstiredaktori, näiteks üleva teksti abil, näete:

 SN, nimi, linn 1, Michael, New Jersey 2, Jack, California 

Nagu näete, eraldatakse CSV-faili elemendid komadega. Siin ,on piiritleja.

Teie piiritlejana võib teie vajaduste järgi olla ükskõik milline tähemärk.

Märkus . Csv-moodulit saab kasutada ka teiste faililaiendite (näiteks: .txt ) jaoks, kui nende sisu on õiges struktuuris.

CSV-failidega töötamine Pythonis

Kuigi open()Pythonis võiksime kasutada sisseehitatud funktsiooni CSV-failidega töötamiseks, on olemas spetsiaalne csvmoodul, mis muudab CSV-failidega töötamise palju lihtsamaks.

Enne kui saame meetodeid csvmoodulis kasutada, peame mooduli esmalt importima, kasutades järgmist:

 import csv 

CSV-failide lugemine csv.reader () abil

CSV-faili lugemiseks Pythonis saame csv.reader()funktsiooni kasutada . Oletame, et meil on praeguses kataloogis csvfail nimega people.csv koos järgmiste kirjetega.

Nimi Vanus Elukutse
Jack 23 Arst
Miller 22 Insener

Loeme seda faili kasutades csv.reader():

Näide 1: lugege CSV-d, kasutades koma eraldajat

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

Väljund

 ("Nimi", "Vanus", "Elukutse") ("Jack", "23", "Arst") ("Miller", "22", "Insener") 

Siin avasime faili people.csv lugemisrežiimis, kasutades järgmist:

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

Failide Pythonis avamise kohta lisateabe saamiseks külastage lehte Python File Input / Output

Seejärel csv.reader()kasutatakse faili lugemiseks, mis tagastab korduva readerobjekti.

readerObjekti Seejärel kordasid kasutades forloop printida sisu iga rida.

Ülaltoodud näites kasutame csv.reader()komaeraldajaga CSV-failide jaoks vaikerežiimis funktsiooni.

Funktsioon on aga palju kohandatavam.

Oletame, et meie CSV-fail kasutas eraldajana vahekaarti . Selliste failide lugemiseks võime funktsioonile edastada valikulised parameetrid csv.reader(). Võtame näite.

Näide 2: CSV-faili lugemine, kasutades vahekaardi eraldajat

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

Pange tähele delimiter = ' 'ülaltoodud näite valikulist parameetrit .

Funktsiooni täielik süntaks csv.reader()on:

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

Nagu süntaksist näete, võime funktsioonile edastada ka murdeparameetri csv.reader(). dialectParameeter lubab meil teha funktsiooni paindlikumaks. Lisateabe saamiseks külastage: CSV-failide lugemine Pythonis.

CSV-failide kirjutamine csv.writer () abil

Pythonis CSV-faili kirjutamiseks saame csv.writer()funktsiooni kasutada .

csv.writer()Tagastab writerobjekti, mis muudab kasutaja andmed piiritletud string. Seda stringi saab hiljem kasutada writerow()funktsiooni abil CSV-failidesse kirjutamiseks . Võtame näite.

Näide 3: kirjutage CSV-faili

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

Ülaltoodud programmi käivitamisel luuakse järgmise sisuga fail protagonist.csv :

 SN, film, peategelane 1, Sõrmuste isand, Frodo Baggins 2, Harry Potter, Harry Potter 

Ülaltoodud programmis oleme faili avanud kirjutamisrežiimis.

Seejärel oleme iga rea ​​läbinud loendina. Need loendid teisendatakse eraldatud stringiks ja kirjutatakse CSV-faili.

Näide 4: Mitme rea kirjutamine kirjutusribadega ()

Kui peame kahemõõtmelise loendi sisu CSV-faili kirjutama, saame seda teha järgmiselt.

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

Siin loeb programm People.csv praegusest kataloogist.

CSV-faili kirjutamiseks peame kutsuma to_csv()DataFrame'i funktsiooni.

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

Siin oleme pd.DataFrame()meetodi abil loonud DataFrame'i . Seejärel to_csv()kutsutakse selle objekti funktsiooni kirjutamiseks person.csv .

Lisateabe saamiseks külastage aadressi:

  • Python pandas.read_csv (ametlik sait)
  • Python pandas.pandas.DataFrame.to_csv (ametlik sait)

Huvitavad Artiklid...