csv.Sniffer în Python

CSV Python 3.0+

Ghicește formatul unui fișier CSV necunoscut: separatorul și dacă are antet.

Sintaxă
s = csv.Sniffer()
dialect = s.sniff(esantion, delimiters=None)
s.has_header(esantion)

Ce face csv.Sniffer

Sniffer().sniff(text) analizează un eșantion (primele câteva mii de caractere) și returnează un dialect cu separatorul și ghilimelele deduse. has_header(text) estimează dacă primul rând este antet. Rezultatele sunt aproximative; pentru fișiere cu format cunoscut, dă opțiunile explicit.

Parametri

Parametru Descriere
esantion Un fragment de text din fișier.
delimiters Opțional. Separatorii posibili.

Ce returnează

sniff: o clasă dialect. has_header: bool.

Exemple

Exemplul 1: Format detectat automat

import csv
esantion = "nume;oras;varsta\nAna;Iași;25\nDan;Cluj;31\n"
s = csv.Sniffer()
dialect = s.sniff(esantion, delimiters=";,")
print(repr(dialect.delimiter), s.has_header(esantion))
for rand in csv.reader(esantion.splitlines(), dialect):
    print(rand)

Rezultat

';' True
['nume', 'oras', 'varsta']
['Ana', 'Iași', '25']
['Dan', 'Cluj', '31']

Greșeli frecvente

  • Dai lui sniff un eșantion prea mic sau neuniform și primești csv.Error: Could not determine delimiter. Dă un eșantion mai mare sau lista de separatori posibili.

Comenzi înrudite