Python pandas read_csv () utf-8 csv-файл, содержащий как EOF, так и NULL байт - PullRequest
1 голос
/ 27 мая 2020
• 1000 'c', как мне решить эту проблему?

Спасибо!

РЕДАКТИРОВАТЬ:

Выполнял следующие коды:

pd.read_csv('extract.csv', sep = ",", encoding='utf-8', quotechar='"', engine='python')

Получена эта ошибка:

pandas .errors.ParserError: Обнаружен нулевой байт. В настоящий момент этот байт не может быть обработан в собственной библиотеке csv Python, поэтому, пожалуйста, передайте вместо него engine = 'c'

Изменено на следующее:

pd.read_csv('extract.csv', sep = ",", encoding='utf-8', quotechar='"', engine='c')

Получена эта ошибка:

pandas .errors.ParserError: Ошибка токенизации данных. C ошибка: EOF внутри строки, начинающейся со строки 0

1 Ответ

0 голосов
/ 27 мая 2020

Ваш файл записывается неправильно и начинается с nul \0 char

>>> import pandas as pd
>>> with open("extract.csv", 'wb') as fh:
...   fh.write(b"\0")
...
1
>>> pd.read_csv('extract.csv', sep = ",", encoding='utf-8', quotechar='"', engine='python')
Traceback (most recent call last):
[omitted]
_csv.Error: line contains NULL byte
During handling of the above exception, another exception occurred:
[omitted]
pandas.errors.ParserError: NULL byte detected. This byte cannot be processed in Python's native csv library at the moment, so please pass in engine='c' instead

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

Если в вашем файле есть содержимое, вы можете решить проблему, начав немного глубже (метод fh.seek())

with open("extract.csv", encoding="utf-8") as fh:
    fh.seek(1)  # step forward into the file before attempting to read it
    pd.read_csv(fh, sep = ",", encoding='utf-8', quotechar='"', engine='python')

Файлы имеют указатель, который указывает, где вы их читаете. Начав немного дальше, вы можете пропустить байт nul, прежде чем передать его в pandas (который должен работать с любым файловым объектом с .read() методом )

Если ваш файл пуст, вы получите другую ошибку

pandas.errors.EmptyDataError: No columns to parse from file
...