Python Pandas CSV импорта "Ошибка токенизации данных" - показать содержимое строки ошибки

576i спросил: 03 ноября 2018 в 09:27 в: python

Я читаю большой CSV-файл

df = pd.read_csv(filename, sep=';',
                 encoding='cp850', quoting=3)

В некоторых строках появляется сообщение об ошибке из-за лишних точек с запятой

Error tokenizing data. C error: 
Expected 33 fields in line 23836, saw 34

При открытии файла в Vim большую часть времени ошибка находится именно в этой строке. Но иногда это не номер этой строки, а строка / несколько строк выше.

Если я ищу строку вручную, я получаю другой номер строки, то есть номер строки, в которой я нахожу ошибку в редакторе.

with open(filename, encoding='cp850') as f1:
    lines = f1.readlines()
    [(e, l) for e, l in enumerate(lines) 
        if len(split(';')) == 34] 

Результат

[(23835, '.....

Таким образом, для этого примера ошибка была не в строке 23836, а в 23835.

Эта проблема возникает как с c, так и с python-механизмом read_csv.

Было бы очень полезно, если бы read_csv мог показать содержимое строки ошибки с сообщением об ошибке.

Есть ли способ сделать это?

Кажется, что в строках файла импорта есть разрывы строк и что read_csv, кажется, принимает эти строки как правильные, если строка разбита на две строки, поэтому что после 33 полей всегда есть перерыв. Но с этой строки количество строк в сообщении об ошибке больше не соответствует разрывам строк в файле.

0 ответов