Python не может декодировать \ x байт - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть CSV-файл с около 9 миллионов строк. При обработке в Python я получил ошибку:

UnicodeEncodeError: кодек 'charmap' не может кодировать символ '\ xe9' в позиции 63: символ отображается на неопределенный

Получается, что строка Beyonc \ xe9 . Так что я думаю, что-то вроде Я попытался просто напечатать '\ xe' в Python, и это не удалось:

>>> print('\xe')
  File "<stdin>", line 1
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-2: truncated \xXX escape

Так что я даже не могу заменить или удалить обратную косую черту на s.replace('\\x', '') или s.strip('\\x').

Есть ли быстрый способ исправить это по всему файлу? Я пытался установить кодировку при чтении файла:

pandas.read_csv(inputFile, encoding='utf-8')

но это не помогло. Та же проблема.

Python версия:

python --version
Python 3.5.2

хотя я установил 3.6.5

Windows 10

Обновление:

После @ ответа Матти Я изменил кодировку в pandas.read_csv() на latin1 , и теперь строка стала Beyonc \ xc3 \ xa9 . И \ xc3 \ xa9 - это Unicode для é .

Эта строка не работает:

print(str(title) + ' , ' + str(artist))

title = 'Crazy In Love'
artist = 'Beyonc\xc3\xa9'

API от lyricsgenius

1 Ответ

0 голосов
/ 27 апреля 2018

'\xe9' в сообщении об ошибке не является реальной обратной косой чертой, за которой следуют буквы, это просто представление одного байта в файле. Ваш файл, вероятно, закодирован как Latin-1, а не UTF-8, как вы указываете. Вместо этого укажите 'latin1' в качестве кодировки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...