„Python CSV“: skaitykite ir rašykite CSV failus

Šioje pamokoje sužinosime, kaip pavyzdžių pagalba skaityti ir įrašyti į „Python“ CSV failus.

CSV (kableliais atskirtų reikšmių) formatas yra vienas iš paprasčiausių ir labiausiai paplitusių lentelių duomenų saugojimo būdų. Kad būtų pavaizduotas CSV failas, jis turi būti išsaugotas su .csv failo plėtiniu.

Paimkime pavyzdį:

Jei atidarysite anksčiau pateiktą CSV failą naudodami teksto rengyklę, pvz., Didingą tekstą, pamatysite:

 SN, vardas, 1 miestas, Maiklas, Naujasis Džersis 2, Džekas, Kalifornija 

Kaip matote, CSV failo elementai yra atskirti kableliais. Čia ,yra ribotuvas.

Pagal savo poreikius galite atskirti bet kurį simbolį.

Pastaba: csv modulis taip pat gali būti naudojamas kitiems failų plėtiniams (pvz .: .txt ), jei jų turinys yra tinkamos struktūros.

Darbas su CSV failais „Python“

Nors integruotąją open()funkciją galėtume naudoti dirbdami su CSV failais „Python“, yra specialus csvmodulis, kuris žymiai palengvina darbą su CSV failais.

Kad galėtume naudoti metodus csvmodulyje, pirmiausia turime importuoti modulį naudodami:

 import csv 

CSV failų skaitymas naudojant csv.reader ()

Norėdami skaityti CSV failą „Python“, galime naudoti šią csv.reader()funkciją. Tarkime , kad dabartiniame kataloge turime csvfailą pavadinimu people.csv su šiais įrašais.

vardas Amžius Profesija
Domkratas 23 Gydytoja
Milleris 22 Inžinierius

Perskaitykime šį failą naudodami csv.reader():

1 pavyzdys: perskaitykite CSV, turėdami kablelio ribotuvą

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

Rezultatas

 („Vardas“, „Amžius“, „Profesija“) („Džekas“, „23“, „Daktaras“) („Milleris“, „22“, „Inžinierius“) 

Čia atidarėme failą people.csv skaitymo režimu naudodami:

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

Norėdami sužinoti daugiau apie failų atidarymą „Python“, apsilankykite: „Python“ failų įvestis / išvestis

Tada csv.reader()naudojamas failui nuskaityti, kuris grąžina kartojamą readerobjektą.

Tada readerobjektas kartojamas naudojant forkilpą, kad būtų išspausdintas kiekvienos eilutės turinys.

Ankstesniame pavyzdyje csv.reader()funkciją numatytuoju režimu naudojame CSV failams, turintiems kablelio ribotuvą.

Tačiau ši funkcija yra daug labiau pritaikoma.

Tarkime, kad mūsų CSV failas kaip skirtuką naudojo skirtuką . Norėdami skaityti tokius failus, galime perduoti pasirinktinius parametrus csv.reader()funkcijai. Paimkime pavyzdį.

2 pavyzdys: skaitykite CSV failą, naudodamiesi skirtuko skirikliu

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

Atkreipkite dėmesį į pasirinktinį parametrą delimiter = ' 'aukščiau pateiktame pavyzdyje.

Visa csv.reader()funkcijos sintaksė yra:

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

Kaip matote iš sintaksės, mes taip pat galime perduoti tarmės parametrą csv.reader()funkcijai. Šis dialectparametras leidžia mums padaryti funkciją lankstesnę. Norėdami sužinoti daugiau, apsilankykite: CSV failų skaitymas „Python“.

CSV failų rašymas naudojant csv.writer ()

Norėdami parašyti į CSV failą „Python“, galime naudoti šią csv.writer()funkciją.

csv.writer()Funkcija grąžina writerobjektą, kuris paverčia vartotojo duomenis į apibrėžtoje eilutę. Šią eilutę vėliau galima naudoti norint įrašyti į CSV failus naudojant writerow()funkciją. Paimkime pavyzdį.

3 pavyzdys: rašykite į CSV failą

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

Paleidus pirmiau nurodytą programą, sukuriamas pagrindinis failas „ protagonist.csv“ su tokiu turiniu:

 SN, filmas, 1 veikėjas, „Žiedų valdovas“, Frodo Bagginsas 2, Haris Poteris, Haris Poteris 

Pirmiau pateiktoje programoje atidarėme failą rašymo režimu.

Tada kiekvieną eilutę išlaikėme kaip sąrašą. Šie sąrašai konvertuojami į atribotą eilutę ir įrašomi į CSV failą.

4 pavyzdys: kelių eilučių rašymas rašytojo eilutėmis ()

Jei mums reikia parašyti dviejų matmenų sąrašo turinį į CSV failą, štai kaip tai padaryti.

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

Čia programa nuskaito people.csv iš dabartinio katalogo.

Norėdami rašyti į CSV failą, turime iškviesti „ to_csv()DataFrame“ funkciją.

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

Čia mes sukūrėme „DataFrame“ naudodami pd.DataFrame()metodą. Tada to_csv()iškviečiama šio objekto funkcija įrašyti į asmenį.csv .

Norėdami sužinoti daugiau, apsilankykite:

  • „Python pandas.read_csv“ (oficiali svetainė)
  • „Python pandas.pandas.DataFrame.to_csv“ (oficiali svetainė)

Įdomios straipsniai...