Питхон ЦСВ: Читање и писање ЦСВ датотека

У овом упутству ћемо научити како читати и писати у ЦСВ датотеке у Питхону уз помоћ примера.

Формат ЦСВ (вредности одвојене зарезом) један је од најједноставнијих и најчешћих начина за складиштење табеларних података. Да би представљала ЦСВ датотеку, она мора бити сачувана са екстензијом .цсв датотеке.

Узмимо пример:

Ако отворите горњу ЦСВ датотеку помоћу уређивача текста као што је узвишени текст, видећете:

 СН, Име, Град 1, Мицхаел, Нев Јерсеи 2, Јацк, Цалифорниа 

Као што видите, елементи ЦСВ датотеке одвојени су зарезима. Ево, ,граничник.

Као разграничење можете имати било који појединачни знак према вашим потребама.

Напомена: цсв модул се такође може користити за друге наставке датотека (попут: .ткт ) све док је њихов садржај у одговарајућој структури.

Рад са ЦСВ датотекама у Питхону

Иако бисмо могли да користимо уграђену open()функцију за рад са ЦСВ датотекама у Питхону, постоји наменски csvмодул који много олакшава рад са ЦСВ датотекама.

Да бисмо могли да користимо методе у csvмодулу, прво морамо да увеземо модул користећи:

 import csv 

Читање ЦСВ датотека помоћу цсв.реадер ()

Да бисмо читали ЦСВ датотеку на Питхону, можемо користити csv.reader()функцију. Претпоставимо да у тренутном директоријуму имамо csvдатотеку под именом пеопле.цсв са следећим уносима.

Име Старост Професија
Јацк 23 Докторе
Миллер 22 Инжењер

Прочитајмо ову датотеку користећи csv.reader():

Пример 1: Прочитајте ЦСВ са разграничитељем зарезом

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

Оутпут

 ('Име', 'Старост', 'Професија') ('Јацк', '23', 'Доцтор') ('Миллер', '22', 'Енгинеер') 

Овде смо отворили датотеку пеопле.цсв у режиму читања користећи:

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

Да бисте сазнали више о отварању датотека у Питхону, посетите: Улаз / излаз Питхон датотеке

Затим csv.reader()се користи за читање датотеке која враћа итерабилни readerобјекат.

Затим се readerобјекат итерира помоћу forпетље за испис садржаја сваког реда.

У претходном примеру користимо csv.reader()функцију у подразумеваном режиму за ЦСВ датотеке које имају граничник зареза.

Међутим, функција је много прилагодљивија.

Претпоставимо да је наша ЦСВ датотека користила таб као граничник. Да бисмо читали такве датотеке, csv.reader()функцији можемо проследити опционалне параметре . Узмимо пример.

Пример 2: Прочитајте ЦСВ датотеку која има раздвајач картице

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

Обратите пажњу на опционални параметар delimiter = ' 'у горњем примеру.

Комплетна синтакса csv.reader()функције је:

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

Као што видите из синтаксе, csv.reader()функцију можемо проследити и дијалекатски параметар . dialectПараметар нам омогућава да функција флексибилнији. Да бисте сазнали више, посетите: Читање ЦСВ датотека у Питхону.

Писање ЦСВ датотека помоћу цсв.вритер ()

Да бисмо писали у ЦСВ датотеку на Питхону, можемо користити csv.writer()функцију.

csv.writer()Функција враћа writerобјекат који омогућава да се подаци корисникове у једну ограниченој низу. Овај низ се касније може користити за уписивање у ЦСВ датотеке помоћу writerow()функције. Узмимо пример.

Пример 3: Запишите у ЦСВ датотеку

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

Када покренемо горњи програм, креира се датотека протагонист.цсв са следећим садржајем:

 СН, филм, главни јунак 1, Лорд оф тхе Рингс, Фродо Баггинс 2, Харри Поттер, Харри Поттер 

У горе наведеном програму отворили смо датотеку у режиму писања.

Затим смо сваки ред проследили као листу. Ове листе се претварају у раздвојени низ и записују у ЦСВ датотеку.

Пример 4: Записивање више редова записима ()

Ако треба да запишемо садржај дводимензионалне листе у ЦСВ датотеку, ево како то можемо учинити.

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

Овде програм чита пеопле.цсв из тренутног директоријума.

Да бисмо писали у ЦСВ датотеку, морамо позвати to_csv()функцију ДатаФраме-а.

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

Овде смо креирали ДатаФраме користећи pd.DataFrame()методу. Затим to_csv()се позива функција овог објекта за писање у персон.цсв .

Да бисте сазнали више, посетите:

  • Питхон пандас.реад_цсв (званична страница)
  • Питхон пандас.пандас.ДатаФраме.то_цсв (званична страница)

Занимљиви Чланци...