我一直致力于从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只使用此方法收到错误消息。有什么想法吗?
谢谢,