我对Python很新,所以我希望这很简单,我只是缺少。
我在Windows 7上运行Python 2.7
我正在尝试通过命令行运行一个基本的Twitter抓取程序。但是我一直收到以下错误:
File "C:\Python27\lib\encodings\cp437.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode character u'\u2019' in position 79: character maps to (undefined)
我基本上理解这里发生了什么,它正在尝试在cp437中打印到控制台,并且它正在被它正在抓取的推文中的unicode字符弄糊涂。
我要做的就是让它用“?”代替那些字符。或者只是让它完全放弃这些角色。我已经阅读了很多关于此的帖子,我无法弄清楚如何去做。
我打开了错误中引用的cp437.py文件,我将所有errors='strict'
更改为errors='ignore'
,但这并没有解决问题。
然后我尝试进入C:\ Python27 \ Lib \ codecs.py文件并将所有errors='strict'
更改为errors='ignore'
,但这也没有解决问题。
有什么想法吗?就像我说的那样,希望我只是缺少一些基本的东西,但我已经阅读了很多帖子,我似乎无法解开它。
非常感谢。 塞特
答案 0 :(得分:2)
我不建议更改内置库 - 它们旨在允许处理编码错误而无需摆弄(如果您有更改,不再清楚任何适合其他人的解决方案,将适用于你)。
您可能只想将errors='ignore'
传递给您正在使用的任何编码函数以跳过错误字符,或errors='replace'
将该字符替换为字符\ufff
以表示那里是一个问题。 [error =' strict'如果您没有传递任何值,则为默认值。 ]
但是,如果要打印到命令行,您可能不希望编码为unicode,而是ASCII,而不是ASCII - 因为unicode包含命令行无法打印的字符。 (我怀疑导致错误的那个,而不是你从Twitter获得的响应中存在非标准的unicode字符)。
尝试例如。
print original_data.encode('ascii', 'ignore')