Формат CSV является наиболее часто используемым форматом импорта и экспорта для баз данных и электронных таблиц. В этом руководстве будет подробно рассказано о CSV, а также о модулях и классах, доступных для чтения и записи данных в файлы CSV. Также будет рассмотрен рабочий пример, чтобы показать вам, как читать и записывать данные в файл CSV на Python.
Что такое файл CSV?
Файл CSV (значения, разделенные запятыми) позволяет сохранять данные в табличной структуре с расширением .csv. Файлы CSV широко использовались в приложениях электронной коммерции, поскольку их очень легко обрабатывать. Некоторые из областей, где они были использованы, включают в себя:
- импорт и экспорт данных клиентов
- импорт и экспорт продукции
- экспорт заказов
- экспорт аналитических отчетов по электронной коммерции
Модули для чтения и записи
Модуль CSV имеет несколько функций и классов, доступных для чтения и записи CSV, и они включают в себя:
- функция csv.reader
- функция csv.writer
- класс csv.Dictwriter
- класс csv.DictReader
csv.reader
Модуль csv.reader принимает следующие параметры:
-
csvfile: обычно это объект, который поддерживает протокол итератора и обычно возвращает строку каждый раз, когда__next__()его__next__(). -
dialect='excel': необязательный параметр, используемый для определения набора параметров, специфичных для определенного диалекта CSV. -
fmtparams: необязательный параметр, который можно использовать для переопределения существующих параметров форматирования.
Вот пример того, как использовать модуль csv.reader.
|
1
2
3
4
5
6
|
import csv
with open(‘example.csv’, newline=») as File:
reader = csv.reader(File)
for row in reader:
print(row)
|
модуль csv.writer
Этот модуль похож на модуль csv.reader и используется для записи данных в CSV. Требуется три параметра:
-
csvfil e: это мочь быть любым объектом с методомwrite(). -
dialect='excel': необязательный параметр, используемый для определения набора параметров, специфичных для конкретного CSV. -
fmtparam: необязательный параметр, который можно использовать для переопределения существующих параметров форматирования.
Классы DictReader и DictWriter
DictReader и DictWriter — это классы, доступные в Python для чтения и записи в CSV. Хотя они и похожи на функции чтения и записи, эти классы используют объекты словаря для чтения и записи в CSV-файлы.
DictReader
Он создает объект, который отображает прочитанную информацию в словарь, ключи которого задаются параметром fieldnames . Этот параметр является необязательным, но если он не указан в файле, данные первой строки становятся ключами словаря.
Пример:
|
1
2
3
4
5
|
import csv
with open(‘name.csv’) as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
print(row[‘first_name’], row[‘last_name’])
|
DictWriter
Этот класс аналогичен классу DictWriter и выполняет противоположную функцию: запись данных в файл CSV. Класс определяется как csv. DictWriter ( csvfile , DictWriter csvfile , restval='' , extrasaction='raise' , dialect='excel' , *args , ** kwds )
Параметр fieldnames определяет последовательность ключей, которые определяют порядок, в котором значения в словаре записываются в файл CSV. В отличие от DictReader, этот ключ не является обязательным и должен быть определен во избежание ошибок при записи в CSV.
Диалекты и форматирование
Диалект — это вспомогательный класс, используемый для определения параметров для конкретного экземпляра reader или writer . Диалекты и параметры форматирования должны быть объявлены при выполнении функции чтения или записи.
Есть несколько атрибутов, которые поддерживаются диалектом:
- разделитель : строка, используемая для разделения полей. По умолчанию это
','. - двойная кавычка : Управляет тем, как должны быть указаны кавычки, появляющиеся внутри поля. Может быть Верным или Ложным.
- escapechar : строка, используемая автором для экранирования разделителя, если в
QUOTE_NONEзадано значениеQUOTE_NONE. - lineterminator : строка, используемая для завершения строк, созданных
writer. По умолчанию используется значение'\r\n'. - quotechar : строка, используемая для цитирования полей, содержащих специальные символы. По умолчанию
'"'. - skipinitialspace : если установлено значение
True, любые пробелы, следующие сразу за разделителем , игнорируются. - строгий : если установлено
True, это вызывает ошибку исключения при неправильном вводе CSV. - цитирование : определяет, когда следует создавать кавычки при чтении или записи в CSV.
Чтение файла CSV
Давайте посмотрим, как читать CSV-файл, используя вспомогательные модули, которые мы обсуждали выше.
Создайте свой CSV-файл и сохраните его как example.csv. Убедитесь, что он имеет расширение .csv и заполните некоторые данные. Здесь у нас есть CSV-файл, который содержит имена учеников и их оценки.

Ниже приведен код для чтения данных в нашем CSV с использованием функции csv.DictReader класса csv.DictReader .
Чтение CSV-файла с помощью csv.reader
|
1
2
3
4
5
6
7
|
import csv
with open(‘example.csv’) as File:
reader = csv.reader(File, delimiter=’,’, quotechar=’,’,
quoting=csv.QUOTE_MINIMAL)
for row in reader:
print(row)
|
В приведенном выше коде мы импортируем модуль CSV, а затем открываем наш файл CSV в виде File . Затем мы определяем объект reader и используем метод csv.reader для извлечения данных в объект. Затем мы перебираем объект reader и извлекаем каждую строку наших данных.
Мы показываем прочитанные данные, печатая их содержимое на консоль. Мы также указали обязательные параметры, такие как разделитель, кавычка и цитирование.
Выход
|
1
2
3
4
|
[‘first_name’, ‘last_name’, ‘Grade’]
[‘Alex’, ‘Brian’, ‘B’]
[‘Rachael’, ‘Rodriguez’, ‘A’]
[‘Tom’, ‘smith’, ‘C’]
|
Чтение CSV-файла с помощью DictReader
Как мы упоминали выше, DictWriter позволяет нам читать файл CSV, отображая данные в словарь вместо строк, как в случае с модулем csv.reader . Хотя имя поля является необязательным параметром, важно всегда помечать столбцы для удобства чтения.
Вот как читать CSV, используя класс DictWriter.
|
1
2
3
4
5
6
7
8
|
import csv
results = []
with open(‘example.csv’) as File:
reader = csv.DictReader(File)
for row in reader:
results.append(row)
print results
|
Сначала мы импортируем модуль csv и инициализируем результаты пустого списка, которые мы будем использовать для хранения полученных данных. Затем мы определяем объект reader и используем метод csv.DictReader для извлечения данных в объект. Затем мы перебираем объект reader и извлекаем каждую строку наших данных.
Наконец, мы добавляем каждую строку в список результатов и выводим содержимое на консоль.
Выход
|
1
2
3
4
5
|
[{‘Grade’: ‘B’, ‘first_name’: ‘Alex’, ‘last_name’: ‘Brian’},
{‘Grade’: ‘A’, ‘first_name’: ‘Rachael’, ‘last_name’: ‘Rodriguez’},
{‘Grade’: ‘C’, ‘first_name’: ‘Tom’, ‘last_name’: ‘smith’},
{‘Grade’: ‘B’, ‘first_name’: ‘Jane’, ‘last_name’: ‘Oscar’},
{‘Grade’: ‘A’, ‘first_name’: ‘Kennzy’, ‘last_name’: ‘Tim’}]
|
Как вы можете видеть выше, использование класса DictReader лучше, потому что он выдает наши данные в формате словаря, с которым легче работать.
Запись в файл CSV
Давайте теперь посмотрим, как csv.writer к записи данных в файл CSV с csv.writer функции csv.Dictwriter класса csv.Dictwriter обсуждались в начале этого урока.
Запись в файл CSV с помощью csv.writer
Код ниже записывает данные, определенные в файл example2.csv .
|
01
02
03
04
05
06
07
08
09
10
11
12
|
import csv
myData = [[«first_name», «second_name», «Grade»],
[‘Alex’, ‘Brian’, ‘A’],
[‘Tom’, ‘Smith’, ‘B’]]
myFile = open(‘example2.csv’, ‘w’)
with myFile:
writer = csv.writer(myFile)
writer.writerows(myData)
print(«Writing complete»)
|
Сначала мы импортируем модуль csv, и функция writer() создаст объект, подходящий для записи. Чтобы перебрать данные по строкам, нам нужно будет использовать writerows() функция.
Вот наш CSV с данными, которые мы записали в него.

Запись в файл CSV с использованием DictWriter
Давайте напишем следующие данные в CSV.
|
1
2
3
4
5
|
data = [{‘Grade’: ‘B’, ‘first_name’: ‘Alex’, ‘last_name’: ‘Brian’},
{‘Grade’: ‘A’, ‘first_name’: ‘Rachael’, ‘last_name’: ‘Rodriguez’},
{‘Grade’: ‘C’, ‘first_name’: ‘Tom’, ‘last_name’: ‘smith’},
{‘Grade’: ‘B’, ‘first_name’: ‘Jane’, ‘last_name’: ‘Oscar’},
{‘Grade’: ‘A’, ‘first_name’: ‘Kennzy’, ‘last_name’: ‘Tim’}]
|
Код, как показано ниже.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
import csv
with open(‘example4.csv’, ‘w’) as csvfile:
fieldnames = [‘first_name’, ‘last_name’, ‘Grade’]
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
writer.writerow({‘Grade’: ‘B’, ‘first_name’: ‘Alex’, ‘last_name’: ‘Brian’})
writer.writerow({‘Grade’: ‘A’, ‘first_name’: ‘Rachael’,
‘last_name’: ‘Rodriguez’})
writer.writerow({‘Grade’: ‘B’, ‘first_name’: ‘Jane’, ‘last_name’: ‘Oscar’})
writer.writerow({‘Grade’: ‘B’, ‘first_name’: ‘Jane’, ‘last_name’: ‘Loive’})
print(«Writing complete»)
|
Сначала мы определим fieldnames , которые будут представлять заголовки каждого столбца в файле CSV. Метод writerrow() будет записывать по одной строке за раз. Если вы хотите записать все данные одновременно, вы будете использовать метод writerrows() .
Вот как можно записать все строки одновременно.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
import csv
with open(‘example5.csv’, ‘w’) as csvfile:
fieldnames = [‘first_name’, ‘last_name’, ‘Grade’]
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
writer.writerows([{‘Grade’: ‘B’, ‘first_name’: ‘Alex’, ‘last_name’: ‘Brian’},
{‘Grade’: ‘A’, ‘first_name’: ‘Rachael’,
‘last_name’: ‘Rodriguez’},
{‘Grade’: ‘C’, ‘first_name’: ‘Tom’, ‘last_name’: ‘smith’},
{‘Grade’: ‘B’, ‘first_name’: ‘Jane’, ‘last_name’: ‘Oscar’},
{‘Grade’: ‘A’, ‘first_name’: ‘Kennzy’, ‘last_name’: ‘Tim’}])
print(«writing complete»)
|
Вывод
В этом руководстве рассматривается большинство вопросов, необходимых для успешного чтения и записи в файл CSV с использованием различных функций и классов, предоставляемых Python. CSV-файлы широко используются в программных приложениях, потому что они легко читаются и управляются, а их небольшой размер делает их относительно быстрой для обработки и передачи.
Не стесняйтесь, чтобы увидеть, что у нас есть в наличии для продажи и для изучения на рынке , и не стесняйтесь задавать любые вопросы и предоставить свой ценный отзыв, используя канал ниже.
Выучить питон
Изучите Python с нашим полным руководством по питону, независимо от того, начинаете ли вы или начинающий программист, ищущий новые навыки.