在Windows上安装了一些issues Chrome Compact语言检测库后,我从this 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'编解码器不能编码字符u'\ u2019' 位置15:字符映射到未定义
我did read:
“你必须提供CLD clean(交换有效)UTF-8,所以任何编码 问题必须事先解决。“
但是,我认为我的语句中包含了编码为UTF8的语句?
我认为我需要确保将字符串传递给CLD,以保留阿拉伯语,亚洲语等语言中的字体。
这是我的第一个python项目,很可能这是一个菜鸟错误。谁能指出我的错误以及如何纠正?
如果我需要收集更多信息,请在评论中告诉我,我会编辑我的Q以提供更多信息。
修改的 如果有帮助,here is my rookie code(减少复制问题)。 我正在运行Python 2.7 32位。
在一段时间后运行此代码,我get this error。 如果我没有正确实现错误报告,请告诉我。
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>
答案 0 :(得分:1)
看起来你在打印声明上失败了吗?这意味着Python无法将unicode字符串编码为它认为控制台的stdout编码(“print sys.getdefaultencoding()”)。
如果你的终端期望python是错误的,你可以设置env var(“export PYTHONIOENCODING = UTF-8”),它会将你打印的字符串编码为utf-8。或者,在打印之前,您可以编码到您的终端所期望的任何字符集(并且可能必须忽略/替换错误以避免例如您所点击的异常)......