Как работать с 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, он бы выглядел так:

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

импортировать csv
с open («fruit.csv») как файл:
data_reader = csv.reader (file)
для строки в data_reader:
print (line)

Первая строка в приведенном выше примере импортирует модуль «csv». Затем оператор «with open» используется для безопасного открытия файла, хранящегося на вашем жестком диске (в данном случае «fruit.csv»). Новый объект «data_reader» создается путем вызова метода «reader» из модуля «csv». Этот метод «читателя» принимает имя файла в качестве обязательного аргумента, поэтому ему передается ссылка на «fruit.csv». Затем выполняется оператор цикла for для печати каждой строки из файла «fruit.csv». После выполнения примера кода, упомянутого выше, вы должны получить следующий результат:

[’50’, ’70’, ’30’, ’90’]

Если вы хотите назначить номера строк для вывода, вы можете использовать функцию «перечислить», которая присваивает номер каждому элементу в итерируемом объекте (начиная с 0, если не было изменено).

импортировать csv
с open («fruit.csv») как файл:
data_reader = csv. reader (файл)
для индекса, строка в enumerate (data_reader):
print (index, line)

Переменная «index» сохраняет подсчитать для каждого элемента. После выполнения примера кода, упомянутого выше, вы должны получить следующий результат:

0 [‘Mango’, ‘Banana’, ‘Apple’, ‘Orange’]
1 [’50’, ’70’, ’30’, ’90’]

Поскольку первая строка в файле «csv» обычно содержит заголовки столбцов, вы можете используйте функцию «перечислить» для извлечения этих заголовков:

импортировать csv
с open («fruit.csv») как файл:
data_reader = csv.reader (файл)
для индекса, строка в enumerate (data_reader):
если index == 0:
заголовки = строка
print (заголовки)

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

[‘Mango’, ‘Banana’, ‘Apple’, ‘Orange’]

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

импортировать csv
с open («fruit.csv») как файл:
data_reader = csv.reader (file, delimiter = «;»)
для строки в data_reader:
print (line)

Поскольку в файле CSV каждый столбец связан со значениями в строке, вы можете создать объект «словарь» Python, когда чтение данных из файла «csv». Для этого вам нужно использовать метод «DictReader», как показано в приведенном ниже коде:

import csv
with open («fruit.csv») как файл:
data_reader = csv.DictReader (file)
для строки в data_reader:
print (line)

После запуска в примере кода, упомянутом выше, вы должны получить следующий результат:

{‘Mango’: ’50’, ‘Banana’: ’70’, ‘Apple’: ’30 ‘,’ Orange ‘:’ 90 ‘}

Итак, теперь у вас есть объект словаря, который связывает отдельные столбцы с соответствующими значениями в строках. Это отлично работает, если у вас только одна строка. Предположим, что файл «fruit.csv» теперь включает дополнительную строку, в которой указывается, сколько дней потребуется, чтобы запас фруктов погиб.

Mango, Banana, Apple , Оранжевый
50,70,30,90
3,1,6,4

Если у вас несколько строк, выполняется один и тот же образец кода выше будет производить другой результат.

{‘Манго’: ’50’, ‘Банан’: ’70’, ‘Яблоко’: ’30’, ‘Апельсин’: ’90’}
{‘Mango’: ‘3’, ‘Banana’: ‘1’, ‘Apple’: ‘6’, ‘Orange’: ‘4’}

Это может не идеален, поскольку вы можете сопоставить все значения, относящиеся к одному столбцу, с одной парой ключ-значение в словаре Python. Вместо этого попробуйте этот пример кода:

импортировать csv
с open («fruit.csv») как файл:
data_reader = csv.DictReader ( файл)
data_dict = {}
для строки в data_reader:
для ключа, значения в line.items ():
data_dict.setdefault (key, [] )
data_dict [ключ] .append (значение)
print (data_dict)

После выполнения примера кода, упомянутого выше, вы должны получить следующее вывод:

{‘Манго’: [’50’, ‘3’], ‘Банан’: [’70’, ‘1’], ‘Яблоко’: [ ’30’, ‘6’], ‘Orange’: [’90’, ‘4’]}

Цикл «for» используется для каждого элемента «DictReader». ”Для перебора пар ключ-значение. Перед этим определяется новая переменная словаря Python «data_dict». Он будет хранить окончательные сопоставления данных. Во втором блоке цикла for используется метод setdefault словаря Python. Этот метод присваивает значение ключу словаря. Если пары «ключ-значение» не существует, создается новая из указанных аргументов. Таким образом, в этом случае новый пустой список будет назначен ключу, если он еще не существует. Наконец, «значение» добавляется к соответствующему ключу в последнем объекте «data_dict».

Запись данных в файл CSV

Чтобы записать данные в «csv» », Вам нужно будет использовать метод« writer »из модуля« csv ». В приведенном ниже примере к существующему файлу «fruit.csv» будет добавлена ​​новая строка.

import csv
with open («fruit.csv», «a «) как файл:
data_writer = csv.writer (file)
data_writer.writerow ([3,1,6,4])

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

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

import csv
с открытым («fruit.csv», «w») как файл:
headings = [«Mango «,» Банан «,» Яблоко «,» Апельсин «]
data_writer = csv.DictWriter (file, fieldnames = headings)
data_writer.writeheader ()
data_writer.writerow ( {«Манго»: 50, «Банан»: 70, «Яблоко»: 30, «Апельсин»: 90})
data_writer. Writerow ({«Манго»: 3, «Банан»: 1, «Яблоко»: 6, «Апельсин»: 4})

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

Заключение

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

Оцените статью
nanomode.ru
Добавить комментарий