【问题标题】:nltk UnicodeDecodeError - connected with the ntpath.py filenltk UnicodeDecodeError - 与 ntpath.py 文件连接
【发布时间】:2016-11-01 11:35:41
【问题描述】:

Python 版本: 2.7

Windows 版本:Windows 7 64 位

系统语言:俄语

我有一个问题在网上还没有解决。

这是我的代码:

 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)

据我从谷歌和 Stackoverflow 的回答中了解到,该问题与 ntpath.py 的语言问题有关。

我尝试了以下问题,但没有奏效:

  1. 使用sys.setdefaultencoding('utf8')How to fix: "UnicodeDecodeError: 'ascii' codec can't decode byte"

  2. 使用sys.setdefaultencoding('Cp1252') 它消除了错误。但是,我的程序的输出也消失了。

  3. 使用import ioPython (nltk) - UnicodeDecodeError: 'ascii' codec can't decode byte

  4. ntpath.py 中使用unicode().decode()(我不记得找到此解决方案的链接)。

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,我曾尝试在 3.5 版本中工作,但在编译 exe 文件时遇到了很多麻烦。 2.7 很好用。我可以通过某种方式更改我的系统参数以避免这个问题吗?
  • 是的,您可以:您的用户名是“Александр”,所以userhome 可能是r"C:\Users\Александр"。创建一个名为 Alexander(或 Aleksandr 或 Donald)的新用户,以便文件夹路径仅包含 ascii 字符。
  • @alexis,非常感谢,但我找到了更好的解决方案)检查我上面的 UPD。
  • 您应该将您的解决方案作为答案发布,而不是作为对问题的编辑。

标签: python python-2.7 unicode nltk textblob


【解决方案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

【讨论】:

    猜你喜欢
    • 2020-03-23
    • 2012-10-26
    • 2014-10-24
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    • 2014-05-31
    相关资源
    最近更新 更多