试图用Tweepy提取推文,但表情符号让它崩溃

时间:2017-11-22 14:02:37

标签: python twitter tweepy emoji python-unicode

我一直致力于从Twitter帐户中提取推文的程序。它看起来像这样:

import tweepy
from tweepy import OAuthHandler
import json
import time
import sys
import builtins

consumer_key = ''
consumer_secret = ''
access_token = ''
access_secret = ''

auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)

api = tweepy.API(auth)

user = api.get_user('nytimes')

statuses = api.user_timeline(id = user.id, count = 200)

for status in statuses:
    print("***")
    print("Tweet id: " + status.id_str)
    print(status.text)
    print("Retweet count: " + str(status.retweet_count))
    print("Favorite count: " + str(status.favorite_count))
    print(status.created_at)
    print("Status place: " + str(status.place))
    print("Source: " + status.source)
    print("Coordinates: " + str(status.coordinates))

    time.sleep(1)

它工作正常......直到我得到一条表情符号和表情符号。然后我收到此错误消息:

  

UnicodeEncodeError:' UCS-2'编解码器不能对位置19-19中的字符进行编码:Tk

中不支持非BMP字符

做了一些研究,我发现了一些应该解决这个问题的代码:

def print_ucs2(*args, print=builtins.print, **kwds):
    args2 = []
    for a in args:
        a = str(a)
    if max(a) > '\uffff':
        b = a.encode('utf-16le', 'surrogatepass')
        chars = [b[i:i+2].decode('utf-16le', 'surrogatepass')
    for i in range(0, len(b), 2)]
        a = ''.join(chars)
        args2.append(a)
        print(*args2, **kwds) 

builtins._print = builtins.print 
builtins.print = print_ucs2

问题是,一旦我将这段代码添加到我的程序中,它只会打印表情符号。没有其他的。我不再收到错误消息了......但我也没有推文。

我还读过可以用.encode(' utf-8')完成的事情,但我不知道该把它放到哪里,到目前为止我还是#39 ; ve只使用此方法收到错误消息。有什么想法吗?

谢谢,

0 个答案:

没有答案