0

在 Windows 上安装 Chrome 紧凑型语言检测库出现一些问题后,我从这个 easy_install安装了 CLD 。

我现在可以使用 CLD,但遇到了一些编码问题。

背景

将推文提取到 python 脚本中,并在去除主题标签和链接后,将它们传递给 CLD 以检测语言。
以下是我的代码的简化版本:

s = "I am a tweet from Twitter"
clean_s = s.encode('utf-8')
lan = cld.detect(clean_s, pickSummaryLanguage=True, removeWeakMatches=True)

问题

5 次中有 4 次按预期工作(返回关于它是什么语言的响应)。

但是,我不断弹出此错误:

UnicodeEncodeError:“charmap”编解码器无法在位置 15 编码字符 u'\u2019':字符映射到未定义

确实读过

“您必须提供 CLD 干净(交换有效)的 UTF-8,因此必须事先解决任何编码问题。”

但是,我认为我的声明已经涵盖了这一点以编码为 UTF8?

我假设我需要确保将字符串传递给 CLD,以保留阿拉伯语、亚洲等语言的字体。

这是我的第一个 python 项目,所以这很可能是一个菜鸟错误。谁能指出我的错误以及如何纠正?

如果我需要收集更多信息,请在评论中告诉我,我将编辑我的 Q 以提供更多信息。

编辑 如果有帮助,这是我的菜鸟代码(减少复制问题)。我正在运行 Python 2.7 32 位。

运行这段代码,过了一会儿,我得到了这个错误。如果我没有正确实现错误报告,请告诉我。

Raw: Traceback (most recent call last):
  File "LanguageTesting.py", line 71, in <module>
    parse_tweet(tweet)
  File "LanguageTesting.py", line 43, in parse_tweet
    print "Raw:", raw
  File "C:\Python27\ArcGIS10.1\lib\encodings\cp850.py", line 12, in encode
    return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode characters in position 29-32: character maps to <undefined>
4

1 回答 1

1

看起来您在打印语句上失败了,对吗?这意味着 Python 无法将 unicode 字符串编码为它认为控制台的标准输出编码(“print sys.getdefaultencoding()”)。

如果 python 对您的终端的期望有误,您可以设置 env var ("export PYTHONIOENCODING=UTF-8"),它会将您打印的字符串编码为 utf-8。或者,在打印之前,您可以编码为终端期望的任何字符集(并且可能必须忽略/替换错误以避免像您遇到的异常那样的异常)...

于 2012-11-21T12:41:29.713 回答