Python: 2,7NLTK UnicodeDecodeError - связан с ntpath.py файлом
версия для Windows: Windows 7 64-бит
Язык системы: Русский
I есть проблема, которая еще не решена в Интернете.
Вот мой код:
import textblob
text = "I love people"
text = TextBlob(text)
print text.sentiment
Я получаю следующее сообщение об ошибке связано с nltk
способом:
Traceback (most recent call last):
File "C:\Users\Александр\Desktop\TextBlob.py", line 1, in <module>
import textblob
File "C:\Python27\lib\site-packages\textblob\__init__.py", line 9, in <module>
from .blob import TextBlob, Word, Sentence, Blobber, WordList
File "C:\Python27\lib\site-packages\textblob\blob.py", line 28, in <module>
import nltk
File "C:\Python27\lib\site-packages\nltk\__init__.py", line 128, in <module>
from nltk.chunk import *
File "C:\Python27\lib\site-packages\nltk\chunk\__init__.py", line 155, in <module>
from nltk.data import load
File "C:\Python27\lib\site-packages\nltk\data.py", line 77, in <module>
if 'APPENGINE_RUNTIME' not in os.environ and os.path.expanduser('~/') != '~/':
File "C:\Python27\lib\ntpath.py", line 311, in expanduser
return userhome + path[i:]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc0 in position 9: ordinal not in range(128)
Насколько я понял из ответов от Google и Stackoverflow, проблема связана к языковым проблемам ntpath.py
.
Я попытался следующие вопросы, и они не работали:
Использование
sys.setdefaultencoding('utf8')
How to fix: "UnicodeDecodeError: 'ascii' codec can't decode byte"Использование
sys.setdefaultencoding('Cp1252')
Он устранил ошибку. Однако выход моей программы также исчез.Использование
import io
. Python (nltk) - UnicodeDecodeError: 'ascii' codec can't decode byteИспользование
unicode().decode()
вntpath.py
(я не помню ссылку, где нашел это решение).
UPD: Я нашел решение.
Я попытался вставить эту часть в ntpath.py
:
reload(sys)
sys.setdefaultencoding('Cp1252')
Итак, вот часть кода в этом файле:
import os
import sys
import stat
import genericpath
import warnings
#another way
reload(sys)
sys.setdefaultencoding('Cp1252')
Он отлично работает. Если у вас есть другой язык в настройках системы, «играйте» с ними и замените Cp1252
.
Это не имеет никакого отношения к NLTK, я думаю.Проблема заключается в том, что ваш путь содержит символы, отличные от ASCII, которые не обрабатываются должным образом. Если вы новичок в Python, почему вы не работаете с Python 3? У вас будет гораздо меньше проблем такого рода. – lenz
@ lenz, я попытался работать в версии 3.5, но у меня было много проблем с компиляцией в exe-файлах. 2.7 работает с ним неплохо. Могу ли я каким-либо образом изменить параметры моей системы, чтобы избежать этой проблемы? – Alex
Да Вы можете: Ваше имя пользователя "Александр", поэтому 'userhome', вероятно,' r 'C: \ Users \ Александр "'. Создайте нового пользователя с именем Alexander (или Aleksandr, или Donald), чтобы пути к папке содержали только символы ascii. – alexis