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”. Далі, оператор “with open” використовується для безпечного відкриття файлу, що зберігається на жорсткому диску (“фрукти.csv ”у даному випадку). Новий об’єкт “data_reader” створюється за допомогою виклику методу “читача” з модуля “csv”. Цей метод “читача” приймає ім’я файлу як обов’язковий аргумент, тому посилання на “фрукти.csv ”передається йому. Далі запускається оператор циклу “for” для друку кожного рядка з “фруктів”.csv ”. Після запуску зразка коду, згаданого вище, ви повинні отримати такий результат:

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

Якщо ви хочете призначити номери рядків для виведення, ви можете скористатися функцією “перелічити”, яка присвоює число кожному елементу в ітерабельному документі (починаючи з 0, якщо його не змінити).

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

Змінна “index” зберігає кількість для кожного елемента. Після запуску зразка коду, згаданого вище, ви повинні отримати такий результат:

0 ['Манго', 'Банан', 'Яблуко', 'Помаранчевий']
1 ['50', '70', '30', '90']

Оскільки перший рядок у файлі “csv” зазвичай містить заголовки стовпців, ви можете скористатися функцією “перерахувати” для вилучення цих заголовків:

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

Блок “якщо” у наведеному вище операторі перевіряє, чи дорівнює індекс нулю (перший рядок у “фрукти.файл CSV ”). Якщо так, тоді значення змінної “рядок” присвоюється новій змінній “заголовки”. Після запуску зразка коду вище, ви повинні отримати наступний результат:

['Манго', 'Банан', 'Яблуко', 'Апельсин']

Зверніть увагу, що ви можете використовувати власний роздільник, коли дзвоните “csv.метод читання ”за допомогою необов’язкового аргументу„ роздільник ”у наступному форматі:

імпорт csv
з відкритими ("фрукти.csv ") у вигляді файлу:
data_reader = csv.зчитувач (файл, роздільник = ";")
для рядка в data_reader:
друк (рядок)

Оскільки у файлі csv кожен стовпець пов’язаний зі значеннями в рядку, можливо, ви захочете створити об’єкт «словника» Python під час читання даних із файлу «csv». Для цього потрібно скористатися методом “DictReader”, як показано в коді нижче:

імпорт csv
з відкритими ("фрукти.csv ") у вигляді файлу:
data_reader = csv.DictReader (файл)
для рядка в data_reader:
друк (рядок)

Після запуску зразка коду, згаданого вище, ви повинні отримати такий результат:

'Манго': '50', 'Банан': '70', 'Яблуко': '30', 'Помаранчевий': '90'

Отже, тепер у вас є об’єкт словника, який пов’язує окремі стовпці з відповідними значеннями в рядках. Це чудово працює, якщо у вас лише один рядок. Припустимо, що “плоди.файл CSV ”тепер містить додатковий рядок, який вказує, скільки днів знадобиться, щоб запас фруктів загинув.

Манго, банан, яблуко, апельсин
50,70,30,90
3,1,6,4

Коли у вас кілька рядків, запуск одного і того ж зразка коду вище дасть різні результати.

'Манго': '50', 'Банан': '70', 'Яблуко': '30', 'Помаранчевий': '90'
'Манго': '3', 'Банан': '1', 'Яблуко': '6', 'Помаранчевий': '4'

Це може бути не ідеально, оскільки вам може знадобитися зіставити всі значення, що належать до одного стовпця, до однієї пари ключ-значення у словнику Python. Спробуйте замість цього зразок коду:

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

Після запуску зразка коду, згаданого вище, ви повинні отримати такий результат:

'Манго': ['50', '3'], 'Банан': ['70', '1'], 'Яблуко': ['30', '6'], 'Помаранчевий': ['90 ',' 4 ']

Цикл "for" використовується для кожного елемента об'єкта "DictReader" для циклу над парами ключ-значення. Перед цим визначається нова змінна словника Python “data_dict”. Він буде зберігати остаточні відображення даних. Під другим блоком циклу “for” використовується метод “setdefault” словника Python. Цей метод присвоює значення словниковому ключу. Якщо пара ключ-значення не існує, із зазначених аргументів створюється нова. Тож у цьому випадку ключу буде призначено новий порожній список, якщо він ще не існує. Нарешті, значення “додається” до відповідного ключа в остаточному об’єкті “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.headheader ()
data_writer.writerow ("Манго": 50, "Банан": 70, "Яблуко": 30, "Апельсин": 90)
data_writer.writerow ("Манго": 3, "Банан": 1, "Яблуко": 6, "Апельсин": 4)

Після відкриття порожніх «фруктів.CSV ”, використовуючи оператор“ з відкритим ”, визначається нова змінна“ заголовки ”, яка містить заголовки стовпців. Новий об’єкт “data_writer” створюється шляхом виклику методу “DictWriter” та передачі його посилання на “фрукти.csv ”та аргумент„ імена полів ”. У наступному рядку заголовки стовпців записуються у файл методом “headheader”. Останні два оператори додають нові рядки до відповідних заголовків, створених на попередньому кроці.

Висновок

Файли CSV забезпечують акуратний спосіб запису даних у табличному форматі. Вбудований модуль "csv" Python дозволяє легко обробляти дані, що є у файлах "csv", і реалізовувати на них подальшу логіку.

Корисні інструменти для геймерів Linux
Якщо ви любите грати в ігри на Linux, швидше за все, ви, можливо, використовували додатки та утиліти, такі як Wine, Lutris та OBS Studio, щоб покращит...
HD Remastered Games для Linux, які раніше ніколи не випускали Linux
Багато розробників і видавців ігор випускають HD-ремастер старих ігор, щоб продовжити життя франшизи. Будь ласка, шанувальники просять сумісність із с...
Як використовувати AutoKey для автоматизації ігор Linux
AutoKey - це утиліта автоматизації робочого столу для Linux та X11, запрограмована на Python 3, GTK та Qt. Використовуючи його сценарії та функціональ...