Python Glossary English

все Python 3Файлы и I/Oпонятие

csv.Sniffer

csv — служебные

Угадывает формат CSV по образцу текста: sniff() возвращает диалект с найденным разделителем, has_header() — есть ли строка заголовка.

Синтаксис

dialect = csv.Sniffer().sniff(sample, delimiters=None); csv.Sniffer().has_header(sample)

Это эвристика, и она ошибается в обе стороны: на коротком или однородном образце разделитель или заголовок может быть угадан неверно, а на неудачном образце sniff() бросает csv.Error. Передавайте кусок файла (например, первые несколько килобайт), а после чтения образца верните позицию через seek(0), иначе reader начнёт с середины. Если формат известен заранее, задайте delimiter явно.

Примеры

import csv
import io
f = io.StringIO('name;age\nAnna;30\nBob;25\n')
sample = f.read(1024)
dialect = csv.Sniffer().sniff(sample)
print(repr(dialect.delimiter), csv.Sniffer().has_header(sample))  # → ';' True
f.seek(0)
print(list(csv.reader(f, dialect))[1])  # → ['Anna', '30']

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности