3

我正在试验 Python 的 Twitter API 并遇到了字符编码/解码问题;当我为用户(在本例中为@BBCWorld)收集推文时,如果有特殊标点符号,我会收到以下错误:

286952044814794753 :  Traceback (most recent call last):
  File "C:\Python27\lib\encodings\cp850.py", line 12, in encode
    return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode character u'\u201c' in position 0: character maps to <undefined>

注意:开头的长数字是导致错误的推文的 ID。

导致此问题的特定字符是一个角(打开)双引号(如 MS-Word 中使用的那些)。有没有办法以兼容的形式显示这种标点符号?理想情况下,我想通过使用替换来清理推文以克服这种错误,从而保持上下文,而不是省略字符。

这是代码的核心:

tweets=api.GetUserTimeline('BBCWorld') 
try: 
    for tweet in tweets: 
        print tweet.id, ": ", (tweet.text) 
except UnicodeEncodeError as uee: 
    print uee

感谢您的任何指点,

米卢汀

4

1 回答 1

3

这个问题似乎不是 python-twitter 或 python 的问题 - 这是 Windows cmd 的问题。

如果您在合适的 Unix 终端下尝试此操作,您将得到以下结果:

>>> import twitter
>>> api = twitter.Api()
>>> print api.GetStatus('286952044814794753').text
“How do you change mindsets at a societal level, in a country of 1.2bn people?” - Viewpoints from India http://t.co/RiP4t71q #Delhigangrape

看一下这个问题,讨论如何在 Windows 下处理这个问题:Unicode not print correct to cp850 (cp437), play card suits

我最好的选择是将控制台字体和代码页更改为兼容 unicode,如下所述: https ://stackoverflow.com/a/4234515/679897 或此处:http ://www.velocityreviews.com/forums /t717717-python-unicode-and-windows-cmd-exe.html

于 2013-01-04T01:07:28.853 回答