Python CSV: Les og skriv CSV-filer

I denne opplæringen vil vi lære å lese og skrive inn CSV-filer i Python ved hjelp av eksempler.

Et CSV-format (kommaseparerte verdier) er en av de mest enkle og vanlige måtene å lagre tabeldata på. For å representere en CSV-fil, må den lagres med .csv -filtypen.

La oss ta et eksempel:

Hvis du åpner CSV-filen ovenfor ved hjelp av et tekstredigeringsprogram som sublim tekst, vil du se:

 SN, Name, City 1, Michael, New Jersey 2, Jack, California 

Som du kan se, skilles elementene i en CSV-fil med komma. Her ,er en skillelinje.

Du kan ha et hvilket som helst enkelt tegn som skilletegn i henhold til dine behov.

Merk: csv-modulen kan også brukes til andre filtyper (som: .txt ) så lenge innholdet er i riktig struktur.

Arbeider med CSV-filer i Python

Mens vi kunne bruke den innebygde open()funksjonen til å jobbe med CSV-filer i Python, er det en dedikert csvmodul som gjør arbeidet med CSV-filer mye enklere.

Før vi kan bruke metodene til csvmodulen, må vi importere modulen først ved å bruke:

 import csv 

Lese CSV-filer ved hjelp av csv.reader ()

For å lese en CSV-fil i Python, kan vi bruke csv.reader()funksjonen. Anta at vi har en csvfil som heter people.csv i gjeldende katalog med følgende oppføringer.

Navn Alder Yrke
Jack 23 Doktor
Miller 22 Ingeniør

La oss lese denne filen ved hjelp av csv.reader():

Eksempel 1: Les CSV Having Comma Delimiter

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

Produksjon

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

Her har vi åpnet people.csv- filen i lesemodus ved hjelp av:

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

Hvis du vil lære mer om å åpne filer i Python, kan du gå til: Python File Input / Output

Deretter csv.reader()brukes den til å lese filen, som returnerer et iterabelt readerobjekt.

Den readergjenstand blir deretter iterert ved hjelp av en forløkke for å skrive innholdet i hver rad.

I eksemplet ovenfor bruker vi csv.reader()funksjonen i standardmodus for CSV-filer med kommaavgrenser.

Funksjonen er imidlertid mye mer tilpassbar.

Anta at CSV-filen vår brukte kategorien som skilletegn. For å lese slike filer kan vi overføre valgfrie parametere til csv.reader()funksjonen. La oss ta et eksempel.

Eksempel 2: Les CSV-fil med tabulatoravgrensning

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

Legg merke til den valgfrie parameteren delimiter = ' 'i eksemplet ovenfor.

Den fullstendige syntaksen til csv.reader()funksjonen er:

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

Som du kan se fra syntaksen, kan vi også overføre dialektparameteren til csv.reader()funksjonen. Den dialectparameter tillater oss å gjøre funksjonen mer fleksibel. For å lære mer, besøk: Les CSV-filer i Python.

Skrive CSV-filer ved hjelp av csv.writer ()

For å skrive til en CSV-fil i Python, kan vi bruke csv.writer()funksjonen.

Den csv.writer()funksjonen returnerer et writerobjekt som konverterer brukerdata inn i en avgrenset streng. Denne strengen kan senere brukes til å skrive inn CSV-filer ved hjelp av writerow()funksjonen. La oss ta et eksempel.

Eksempel 3: Skriv til en CSV-fil

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

Når vi kjører programmet ovenfor, opprettes en protagonist.csv- fil med følgende innhold:

 SN, film, hovedperson 1, Ringenes herre, Frodo Baggins 2, Harry Potter, Harry Potter 

I programmet ovenfor har vi åpnet filen i skrivemodus.

Deretter har vi passert hver rad som en liste. Disse listene konverteres til en avgrenset streng og skrives inn i CSV-filen.

Eksempel 4: Skrive flere rader med writerows ()

Hvis vi trenger å skrive innholdet i den todimensjonale listen til en CSV-fil, kan vi gjøre det slik.

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

Her leser programmet people.csv fra gjeldende katalog.

For å skrive til en CSV-fil, må vi kalle to_csv()funksjonen til en 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') 

Her har vi opprettet en DataFrame ved hjelp av pd.DataFrame()metoden. Deretter to_csv()kalles funksjonen for dette objektet, å skrive inn i person.csv .

For å lære mer, besøk:

  • Python pandas.read_csv (offisielt nettsted)
  • Python pandas.pandas.DataFrame.to_csv (offisiell side)

Interessante artikler...