Чтение и разбор файла CSV.
Синтаксис:
import csv
reader = csv.reader(csvfile, dialect='excel', **fmtparams)
Параметры:
csvfile
- файловый объект,dialect
- строка с встроенным диалектом из списка csv.list_dialects()
или объект Dialect
,fmtparams
- параметры диалекта и форматирования. В качестве ключевых аргументов используйте имена атрибутов объекта Dialect
:delimiter=','
- символ, используемый для разделения полей.quotechar=''
- символ, используемый для кавычек в полях, содержащих специальные символы, такие как разделитель.escapechar='\\'
- символ, используемый для экранирования разделителя.quoting=csv.QUOTE_MINIMAL
- определяет, когда должны генерироваться кавычки для полей.strict=False
- если True
, то выдает исключение при неправильной разметке CSV.
Возвращаемое значение:
Описание:
Файл
csvfile
может быть любым объектом, который поддерживает
протокол итератора и возвращает строку каждый раз, когда вызывается метод
__next__()
. Другими словами, подходят как
файловые объекты, так и
объекты списка. Если
csvfile
является файловым объектом, его следует открыть с помощью параметра
newline = ''
встроенной функции
open()
.
Можно указать необязательный параметр диалекта
dialect
, который используется для определения набора параметров, специфичных для конкретного диалекта CSV. Это может быть экземпляр подкласса
csv.Dialect
или одна из строк, возвращаемых функцией
csv.list_dialects()
.
Другие необязательные ключевые аргументы
fmtparams
могут быть заданы для переопределения отдельных параметров форматирования в текущем диалекте. Для получения полной информации о параметрах диалекта и форматирования смотрите раздел "
Диалекты и параметры форматирования модуля csv
".
Каждая строка, считанная из файла CSV, возвращается в виде
списка строк. По умолчанию автоматическое преобразование типов данных не выполняется. Если указана опция формата
QUOTE_NONNUMERIC
, то в этом случае поля без кавычек преобразуются в
числа с плавающей точкой.
Примеры использования:
import csv
# пишем
with open('eggs.csv', 'w', newline='') as csvfile:
spamwriter = csv.writer(csvfile, delimiter=' ',
quotechar='|', quoting=csv.QUOTE_MINIMAL)
spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
# читаем что получилось
with open('eggs.csv', newline='') as csvfile:
spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
for row in spamreader:
print(', '.join(row))
# Spam, Spam, Spam, Spam, Spam, Baked Beans
# Spam, Lovely Spam, Wonderful Spam