Encoding UnicodeDecodeError:&x27;ascii';编解码器可以';t解码,使用gensim,python3.5

Encoding UnicodeDecodeError:&x27;ascii';编解码器可以';t解码,使用gensim,python3.5,encoding,utf-8,python-3.5,gensim,word2vec,Encoding,Utf 8,Python 3.5,Gensim,Word2vec,我在windows和Linux上都使用python 3.5,但得到相同的错误: UnicodeDecodeError:“ascii”编解码器无法解码位置0中的字节0xc1:序号不在范围内(128) 错误日志如下所示: 重新加载的模块:lazylinker\u ext 回溯(最近一次呼叫最后一次): 当您尝试在Python3中使用包含非ASCII字符的Python2 pickle文件时,它看起来像Gensim中的一个bug 当您调用以下命令时,将发生取消勾选: model = gensim.mod

我在windows和Linux上都使用python 3.5,但得到相同的错误: UnicodeDecodeError:“ascii”编解码器无法解码位置0中的字节0xc1:序号不在范围内(128) 错误日志如下所示: 重新加载的模块:lazylinker\u ext 回溯(最近一次呼叫最后一次):


当您尝试在Python3中使用包含非ASCII字符的Python2 pickle文件时,它看起来像Gensim中的一个bug

当您调用以下命令时,将发生取消勾选:

model = gensim.models.Word2Vec.load('model_all_no_lemma')
在Python3中,在取消勾选期间,它希望将遗留字节字符串转换为(Unicode)字符串。默认操作是在严格模式下使用“ASCII”进行解码

修复程序将取决于原始pickle文件中的编码,需要您修补gensim代码

我不熟悉gensim,因此您必须尝试以下两种选择:

联合特遣部队-8 很可能,您的非ASCII数据是UTF-8格式的

  • 编辑
    C:\Users\YZC\Anaconda3\lib\site packages\gensim\utils.py
  • 后藤912线
  • 将行更改为:

    return _pickle.loads(f.read(), encoding='utf-8')
    
    return _pickle.loads(f.read(), encoding='bytes')
    
  • 字节模式 Python3中的Gensim可以很好地处理字节字符串:

  • 编辑
    C:\Users\YZC\Anaconda3\lib\site packages\gensim\utils.py
  • 后藤912线
  • 将行更改为:

    return _pickle.loads(f.read(), encoding='utf-8')
    
    return _pickle.loads(f.read(), encoding='bytes')
    

  • 当您尝试在Python3中使用包含非ASCII字符的Python2 pickle文件时,它看起来像Gensim中的一个bug

    当您调用以下命令时,将发生取消勾选:

    model = gensim.models.Word2Vec.load('model_all_no_lemma')
    
    在Python3中,在取消勾选期间,它希望将遗留字节字符串转换为(Unicode)字符串。默认操作是在严格模式下使用“ASCII”进行解码

    修复程序将取决于原始pickle文件中的编码,需要您修补gensim代码

    我不熟悉gensim,因此您必须尝试以下两种选择:

    联合特遣部队-8 很可能,您的非ASCII数据是UTF-8格式的

  • 编辑
    C:\Users\YZC\Anaconda3\lib\site packages\gensim\utils.py
  • 后藤912线
  • 将行更改为:

    return _pickle.loads(f.read(), encoding='utf-8')
    
    return _pickle.loads(f.read(), encoding='bytes')
    
  • 字节模式 Python3中的Gensim可以很好地处理字节字符串:

  • 编辑
    C:\Users\YZC\Anaconda3\lib\site packages\gensim\utils.py
  • 后藤912线
  • 将行更改为:

    return _pickle.loads(f.read(), encoding='utf-8')
    
    return _pickle.loads(f.read(), encoding='bytes')
    

  • 这是大量的代码,您没有告诉我们错误在哪一行。发布堆栈跟踪可以更容易地发现。那么,你能把这个减少一点吗?如果问题出现在将open(self.filename'rb',encoding='utf-8')作为csvfile:的
    上,您可以将其缩小为一个简单的
    打开('whateverthefilename's','r',encoding=“utf-8”)。read()
    。在这种情况下,这意味着您的文件不是utf-8编码的。仅仅因为默认的文件系统编码是utf9并不意味着这个文件是。@tdelaney My bad,只是添加了日志。@tdelaney。谢谢,但我检查了文件,它是用utf-8编码的。我尝试了下面的方法,它引发了同样的错误。这是很多代码,你没有告诉我们错误在哪一行。发布堆栈跟踪可以更容易地发现。那么,你能把这个减少一点吗?如果问题出现在将open(self.filename'rb',encoding='utf-8')作为csvfile:
    上,您可以将其缩小为一个简单的
    打开('whateverthefilename's','r',encoding=“utf-8”)。read()
    。在这种情况下,这意味着您的文件不是utf-8编码的。仅仅因为默认的文件系统编码是utf9并不意味着这个文件是。@tdelaney My bad,只是添加了日志。@tdelaney。谢谢,但我检查了文件,它是用utf-8编码的。我尝试了下面的方法,它产生了同样的错误。