Python

Как работать с CSV-файлами в Python

Как работать с CSV-файлами в Python
В этой статье будет рассмотрено руководство по работе с CSV-файлами с помощью Python. Термин «csv» означает «значения, разделенные запятыми», где каждая строка или строка содержат текстовые значения, разделенные запятыми. В некоторых случаях для разделения значений вместо запятой также используется точка с запятой. Однако это не имеет большого значения для правил формата файла, и логика обработки обоих типов разделителей остается той же.

Формат файла CSV чаще всего используется для обслуживания баз данных и электронных таблиц. Первая строка в CSV-файле чаще всего используется для определения полей столбцов, а все остальные оставшиеся строки считаются строками. Эта структура позволяет пользователям представлять табличные данные с помощью файлов CSV. Файлы CSV можно редактировать в любом текстовом редакторе. Однако такие приложения, как LibreOffice Calc, предоставляют расширенные инструменты редактирования, сортировки и фильтрации.

Чтение данных из файлов CSV с помощью Python

Модуль CSV в Python позволяет читать, записывать и управлять любыми данными, хранящимися в файлах CSV. Чтобы прочитать файл CSV, вам нужно будет использовать метод «reader» из модуля Python «csv», который включен в стандартную библиотеку Python.

Учтите, что у вас есть файл CSV, содержащий следующие данные:

Манго, Банан, Яблоко, Апельсин
50,70,30,90

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

Теперь, чтобы прочитать значения из «плодов.csv »с помощью модуля Python« csv », вам нужно будет использовать метод« reader »в следующем формате:

импорт csv
с открытыми ("плоды.csv ") как файл:
data_reader = csv.читатель (файл)
для строки в data_reader:
печать (строка)

Первая строка в приведенном выше примере импортирует модуль «csv». Затем оператор «с открытием» используется для безопасного открытия файла, хранящегося на вашем жестком диске («фрукты.csv »в данном случае). Новый объект «data_reader» создается путем вызова метода «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):
если index == 0:
заголовки = строка
печать (заголовки)

Блок «if» в приведенном выше утверждении проверяет, равен ли индекс нулю (первая строка в «fruit.csv ”файл). Если да, то значение переменной «строка» присваивается новой переменной «заголовки». После выполнения приведенного выше примера кода вы должны получить следующий результат:

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

Обратите внимание, что вы можете использовать свой собственный разделитель при вызове «csv.reader », используя необязательный аргумент« разделитель »в следующем формате:

импорт 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'
'Манго': '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», вам нужно будет использовать метод «writer» из модуля «csv». В приведенном ниже примере новая строка будет добавлена ​​к существующим фруктам.csv ”файл.

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

Первый оператор открывает файл в режиме «добавления», обозначенном аргументом «а». Затем вызывается метод «писатель» и ссылка на «фрукты».csv »передается ему в качестве аргумента. Метод «writerow» записывает или добавляет новую строку в файл.

Если вы хотите преобразовать словарь Python в файловую структуру «csv» и сохранить вывод в файле «csv», попробуйте этот код:

импорт csv
с открытыми ("плоды.csv "," w ") в виде файла:
headings = ["Манго", "Банан", "Яблоко", "Апельсин"]
data_writer = csv.DictWriter (файл, имена полей = заголовки)
data_writer.writeheader ()
data_writer.writerow ("Манго": 50, "Банан": 70, "Яблоко": 30, "Апельсин": 90)
data_writer.writerow ("Манго": 3, "Банан": 1, "Яблоко": 6, "Апельсин": 4)

После открытия пустого «Фрукты».csv »с помощью оператора« с открытым », определяется новая переменная« заголовки », которая содержит заголовки столбцов. Новый объект «data_writer» создается путем вызова метода «DictWriter» и передачи ему ссылки на «fruit.csv »и аргумент« fieldnames ». В следующей строке заголовки столбцов записываются в файл с помощью метода «writeheader». Последние два оператора добавляют новые строки к соответствующим заголовкам, созданным на предыдущем шаге.

Заключение

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

Установите последнюю версию игры OpenRA Strategy в Ubuntu Linux
OpenRA - это игровой движок Libre / Free Real Time Strategy, воссоздающий ранние игры Westwood, такие как классическая Command & Conquer: Red Alert. Р...
Установите последнюю версию эмулятора Dolphin для Gamecube и Wii в Linux
Эмулятор Dolphin позволяет вам играть в выбранные вами игры Gamecube и Wii на персональных компьютерах (ПК) Linux. Являясь свободно доступным игровым...
Как использовать чит-движок GameConqueror в Linux
В статье содержится руководство по использованию чит-движка GameConqueror в Linux. Многие пользователи, играющие в игры на Windows, часто используют п...