UnicodeDecodeError: кодек «ascii» не может декодировать байт 0xef в позиции 118374: порядковый номер не в диапазоне (128) - PullRequest
0 голосов
/ 12 июня 2018

Я экспериментирую с некоторыми алгоритмами НЛП и сейчас сосредоточен на анализе настроений.По этой причине я скачал из http://www.cs.jhu.edu/~mdredze/datasets/sentiment/index2.html некоторые файлы формата .review с положительными и отрицательными отзывами.

Я использую BeautifulSoup для анализа этих XML-файлов, и сейчас я пытаюсь прочитать их, только выполнив следующий исходный код:

from bs4 import BeautifulSoup

positive_reviews = BeautifulSoup(open('*******/electronics/positive.review').read())
positive_reviews = positive_reviews.findAll('review_text')

negative_reviews = BeautifulSoup(open('*******/electronics/negative.review').read())
negative_reviews = negative_reviews.findAll('review_text')

Однако я получаю следующееошибка:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 118374: ordinal not in range(128)

при выполнении

positive_reviews = BeautifulSoup(open('*******/electronics/positive.review').read())

.

Как исправить эту ошибку?

Я также заменил

BeautifulSoup(open('*******/electronics/positive.review').read())

с

BeautifulSoup(open('*******/electronics/positive.review').read().decode('utf-8'))

, но я получаю точно такую ​​же ошибку.

Наконец, я уже прочитал несколько соответствующих постов в StackOverflow, но пока ничего не помогаломне.Например, на моем терминале echo $LANG выводит en_GB.UTF-8, как описано в первом ответе UnicodeDecodeError: кодек «ascii» не может декодировать байт 0xef в позиции 1 , но я все еще получаю ошибкувыше.

1 Ответ

0 голосов
/ 12 июня 2018

Если вы используете Python 3, попробуйте заменить

open('*******/electronics/positive.review')

на

open('*******/electronics/positive.review', encoding='utf-8')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...