2016-11-01 19 views
0
версия

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.

Я попытался следующие вопросы, и они не работали:

  1. Использование sys.setdefaultencoding('utf8')How to fix: "UnicodeDecodeError: 'ascii' codec can't decode byte"

  2. Использование sys.setdefaultencoding('Cp1252') Он устранил ошибку. Однако выход моей программы также исчез.

  3. Использование import io. Python (nltk) - UnicodeDecodeError: 'ascii' codec can't decode byte

  4. Использование 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.

+0

Это не имеет никакого отношения к NLTK, я думаю.Проблема заключается в том, что ваш путь содержит символы, отличные от ASCII, которые не обрабатываются должным образом. Если вы новичок в Python, почему вы не работаете с Python 3? У вас будет гораздо меньше проблем такого рода. – lenz

+0

@ lenz, я попытался работать в версии 3.5, но у меня было много проблем с компиляцией в exe-файлах. 2.7 работает с ним неплохо. Могу ли я каким-либо образом изменить параметры моей системы, чтобы избежать этой проблемы? – Alex

+0

Да Вы можете: Ваше имя пользователя "Александр", поэтому 'userhome', вероятно,' r 'C: \ Users \ Александр "'. Создайте нового пользователя с именем Alexander (или Aleksandr, или Donald), чтобы пути к папке содержали только символы ascii. – alexis

ответ

1

Я нашел решение.

Я попытался вставить эту часть в 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.

 Смежные вопросы

  • Нет связанных вопросов^_^