Сообщить об ошибке.

Примеры использования модуля csv в Python

В этом разделе показаны наиболее встречающиеся приемы работы с модулем csv.

Для предварительного анализа данных, содержащихся в CSV-файле, рекомендуем посмотреть в сторону CLI модуля csvkit.

Содержание:


Простейший пример чтения CSV файла:

import csv

with open('some.csv', newline='') as fp:
    reader = csv.reader(fp)
    for row in reader:
        print(row)

Чтение CSV файла в альтернативном формате:

import csv
with open('passwd', newline='') as f:
    reader = csv.reader(f, delimiter=':', quoting=csv.QUOTE_NONE)
    for row in reader:
        print(row)

Простейший пример записи CSV файла:

import csv
with open('some.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    writer.writerows(someiterable)

Декодирование данных CSV файла при чтении/записи:

Поскольку функция open() используется для открытия файла CSV для чтения, то файл по умолчанию будет декодирован в Unicode с использованием системной кодировки locale.getpreferredencoding(). Чтобы декодировать файл, используя другую кодировку, используйте соответствующий аргумент встроенной функции open():

import csv
with open('some.csv', newline='', encoding='utf-8') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)

То же самое относится и к записи в кодировке, отличной от системной. Просто укажите аргумент кодировки при открытии файла на запись.

Регистрация нового диалекта CSV:

import csv
csv.register_dialect('unixpwd', delimiter=':', quoting=csv.QUOTE_NONE)
with open('passwd', newline='') as f:
    reader = csv.reader(f, 'unixpwd')

Отлов и сообщение об ошибках во время чтения CSV файла:

import csv, sys
filename = 'some.csv'
with open(filename, newline='') as f:
    reader = csv.reader(f)
    try:
        for row in reader:
            print(row)
    except csv.Error as e:
        sys.exit(f'file {filename}, line {reader.line_num}: {e}')

И хотя модуль не поддерживает синтаксический анализ напрямую, это легко сделать:

import csv
for row in csv.reader(['one,two,three']):
    print(row)

# ['one', 'two', 'three']