Python

Как да боравя с CSV файлове в Python

Как да боравя с CSV файлове в Python
Тази статия ще обхване урок за работа с “csv” файлове с помощта на Python. Терминът „csv“ означава „стойности, разделени със запетая“, където всеки ред или ред съдържа текстови стойности, обособени със запетаи. В някои случаи за разделяне на стойности вместо „запетая“ се използва и „точка и запетая“. Това обаче не прави голяма разлика за правилата за файлов формат и логиката за работа с двата типа разделители остава същата.

CSV файловият формат се използва най-често за поддържане на бази данни и електронни таблици. Първият ред в CSV файл се използва най-често за дефиниране на полета на колона, докато всички останали редове се считат за редове. Тази структура позволява на потребителите да представят таблични данни с помощта на CSV файлове. CSV файловете могат да се редактират във всеки текстов редактор. Приложения като LibreOffice Calc обаче предоставят разширени инструменти за редактиране, сортиране и филтриране.

Четене на данни от CSV файлове с помощта на Python

Модулът CSV в Python ви позволява да четете, пишете и манипулирате всички данни, съхранявани в CSV файлове. За да прочетете CSV файл, ще трябва да използвате метода “четец” от модула “csv” на Python, който е включен в стандартната библиотека на Python.

Помислете, че имате CSV файл, съдържащ следните данни:

Манго, банан, ябълка, портокал
50,70,30,90

Първият ред на файла дефинира всяка категория колона, в този случай име на плодове. Вторият ред съхранява стойности под всяка колона (наличност в ръка). Всички тези стойности са разграничени със запетая. Ако трябва да отворите този файл в приложение за електронни таблици като LibreOffice Calc, той ще изглежда така:

Сега да прочетете стойности от „плодове.csv ”, използвайки модула“ csv ”на Python, ще трябва да използвате метода“ четец ”в следния формат:

внос csv
с отворени ("плодове.csv ") като файл:
data_reader = csv.четец (файл)
за ред в data_reader:
печат (ред)

Първият ред в горната извадка импортира модула “csv”. След това изразът „с отворен“ се използва за безопасно отваряне на файл, съхраняван на твърдия ви диск („плодове.csv ”в случая). Създава се нов обект “data_reader” чрез извикване на метода “четец” от модула “csv”. Този метод „четец“ приема името на файла като задължителен аргумент, така че препратката към „плодове.csv ”му се предава. След това се изпълнява оператор „for“, за да се отпечата всеки ред от „плодовете“.csv ”файл. След като стартирате кодовата проба, спомената по-горе, трябва да получите следния изход:

['50', '70', '30', '90']

Ако искате да присвоите номера на редове за изход, можете да използвате функцията „изброяване“, която присвоява число на всеки елемент в итерация (започвайки от 0, освен ако не бъде променена).

внос csv
с отворени ("плодове.csv ") като файл:
data_reader = csv.четец (файл)
за индекс, ред в изброяване (четец на данни):
печат (индекс, ред)

Променливата “index” поддържа броя на всеки елемент. След като стартирате кодовата проба, спомената по-горе, трябва да получите следния изход:

0 [„Манго“, „Банан“, „Ябълка“, „Оранжево“]
1 ['50', '70', '30', '90']

Тъй като първият ред във файл „csv“ обикновено съдържа заглавия на колони, можете да използвате функцията „изброяване“, за да извлечете тези заглавия:

внос csv
с отворени ("плодове.csv ") като файл:
data_reader = csv.четец (файл)
за индекс, ред в изброяване (четец на данни):
ако индекс == 0:
заглавия = ред
печат (заглавия)

Блокът „ако“ в изявлението по-горе проверява дали индексът е равен на нула (първи ред в „плодове.csv ”файл). Ако отговорът е „да“, тогава стойността на променливата „line“ се присвоява на нова променлива „headings“. След като изпълните горната проба на кода, трябва да получите следния изход:

[„Манго“, „Банан“, „Ябълка“, „Оранжево“]

Имайте предвид, че можете да използвате свой собствен разделител, когато извиквате „csv.четец ”чрез използване на незадължителен аргумент„ разделител ”в следния формат:

внос csv
с отворени ("плодове.csv ") като файл:
data_reader = csv.четец (файл, разделител = ";")
за ред в data_reader:
печат (ред)

Тъй като в csv файл всяка колона е свързана със стойности в ред, може да искате да създадете обект на „речник“ на Python, когато четете данни от „csv“ файл. За да направите това, трябва да използвате метода “DictReader”, както е показано в кода по-долу:

внос csv
с отворени ("плодове.csv ") като файл:
data_reader = csv.DictReader (файл)
за ред в data_reader:
печат (ред)

След като стартирате кодовата проба, спомената по-горе, трябва да получите следния изход:

'Mango': '50', 'Banana': '70', 'Apple': '30', 'Orange': '90'

Така че сега имате обект на речник, който свързва отделни колони със съответните им стойности в редовете. Това работи добре, ако имате само един ред. Да приемем, че „плодовете.csv ”файлът вече включва допълнителен ред, който указва колко дни ще отнеме, докато запасът от плодове загине.

Манго, банан, ябълка, портокал
50,70,30,90
3,1,6,4

Когато имате няколко реда, стартирането на една и съща извадка от кода по-горе ще доведе до различни резултати.

'Mango': '50', 'Banana': '70', 'Apple': '30', 'Orange': '90'
'Mango': '3', 'Banana': '1', 'Apple': '6', 'Orange': '4'

Това може да не е идеално, тъй като може да искате да съпоставите всички стойности, отнасящи се до една колона, към една двойка ключ-стойност в речник на Python. Вместо това опитайте този пример за код:

внос csv
с отворени ("плодове.csv ") като файл:
data_reader = csv.DictReader (файл)
data_dict =
за ред в data_reader:
за ключ, стойност в ред.елементи ():
data_dict.setdefault (ключ, [])
data_dict [ключ].добавяне (стойност)
печат (data_dict)

След като стартирате кодовата проба, спомената по-горе, трябва да получите следния изход:

'Mango': ['50', '3'], 'Banana': ['70', '1'], 'Apple': ['30', '6'], 'Orange': ['90 ',' 4 ']

Цикъл „за“ се използва за всеки елемент от обекта „DictReader“, за да се завърти по двойки ключ-стойност. Преди това е дефинирана нова променлива на речника на Python „data_dict“. Той ще съхранява окончателно картографиране на данни. Под втория цикъл „for“ се използва методът „setdefault“ на речника на Python. Този метод присвоява стойност на речников ключ. Ако двойката ключ-стойност не съществува, се създава нова от посочените аргументи. Така че в този случай на ключ ще бъде присвоен нов празен списък, ако той все още не съществува. И накрая, „value“ се добавя към съответния му ключ в крайния обект „data_dict“.

Записване на данни в CSV файл

За да запишете данни във файл „csv“, ще трябва да използвате метода „писател“ от модула „csv“. Примерът по-долу ще добави нов ред към съществуващите „плодове.csv ”файл.

внос csv
с отворени ("плодове.csv "," a ") като файл:
data_writer = csv.писател (файл)
data_writer.писане ([3,1,6,4])

Първият оператор отваря файла в режим „добавяне“, обозначен с аргумента „а“. След това се извиква методът „писател” и препратката към „плодове.csv ”му се предава като аргумент. Методът “writerow” записва или добавя нов ред към файла.

Ако искате да конвертирате речника на Python във файлова структура „csv“ и да запишете изхода във файл „csv“, опитайте този код:

внос csv
с отворени ("плодове.csv "," w ") като файл:
заглавия = ["Манго", "Банан", "Ябълка", "Оранжево"]
data_writer = csv.DictWriter (файл, имена на полета = заглавия)
data_writer.headhead ()
data_writer.writerow ("Mango": 50, "Banana": 70, "Apple": 30, "Orange": 90)
data_writer.writerow ("Mango": 3, "Banana": 1, "Apple": 6, "Orange": 4)

След отваряне на празен „плодове.csv “, използвайки оператор„ с отворен “, е дефинирана нова променлива„ headings “, която съдържа заглавия на колони. Създава се нов обект „data_writer“ чрез извикване на метода „DictWriter“ и препращането му към „плодове“.csv “и аргумент„ имена на полета “. В следващия ред заглавията на колоните се записват във файла, използвайки метода “writeheader”. Последните два изявления добавят нови редове към съответните им заглавия, създадени в предишната стъпка.

Заключение

CSV файловете осигуряват чудесен начин за запис на данни в табличен формат. Вграденият модул “csv” на Python улеснява обработката на наличните данни във “csv” файлове и внедряването на допълнителна логика върху него.

Курсорът скача или се движи произволно, докато пишете в Windows 10
Ако установите, че курсорът на вашата мишка скача или се движи самостоятелно, автоматично, произволно, докато пишете в лаптоп или компютър на Windows,...
Как да обърнете посоката на превъртане на мишката и тъчпада в Windows 10
Мишка и Тъчпадs не само правят изчисленията лесни, но и по-ефективни и отнемат по-малко време. Не можем да си представим живот без тези устройства, но...
Как да промените курсора на мишката и размера на курсора, цвета и схемата в Windows 10
Показалецът на мишката и курсорът в Windows 10 са много важни аспекти на операционната система. Това може да се каже и за други операционни системи, т...