все 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Сообщить о неточности