Tweepy,UnicodeEncodeError USC-2
Tweepy, UnicodeEncodeError USC-2
所以我正在尝试使用 python 和 tweepy 包制作一个 Twitter 机器人。
但是,我不断收到 UnicodeEncodeError。
发生错误是因为 python 不能 read/understand 表情符号传递到我通过流提取的推文中。
我已经用类似的问题搜索了所有其他问题,但发布的每个解决方案都不适用于我给定的代码。
我得到的最接近的是使用此处找到的代码 ()
non_bmp_map = dict.fromkeys(range(0x10000, sys.maxunicode + 1), 0xfffd)
然而,即使我能够看到一些 em
,我仍然收到错误消息
import tweepy
from unicodedata import normalize, unicodedata
from tweepy import OAuthHandler
from tweepy import StreamListener
from tweepy import Stream
import sys
#Variables for each required KEY, secret and token
consumer_key = ""
consumer_secret = ""
access_token = ""
access_token_secret = ""
#Set up OAuth and integrate with API
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
class MyStreamListener(tweepy.StreamListener):
def on_status(self, status):
print(status.text)
def on_error(self, status_code):
if status_code == 420:
return False
non_bmp_map = dict.fromkeys(range(0x10000, sys.maxunicode + 1), 0xfffd)
myStream = tweepy.Stream(auth=api.auth,listener = MyStreamListener())
start_stream = myStream.filter(track=['Trump'],async=True)
print(str(start_stream).translate(non_bmp_map))
#write a tweet to push to account
#tweet = "I just felt like running!"
#api.update_status(status=tweet)
这是我收到的错误代码:
Exception in thread Thread-1:
Traceback (most recent call last):
File "C:\Program Files (x86)\Python36-32\lib\threading.py", line 916, in _bootstrap_inner
self.run()
File "C:\Program Files (x86)\Python36-32\lib\threading.py", line 864, in run
self._target(*self._args, **self._kwargs)
File "C:\Program Files (x86)\Python36-32\lib\site-packages\tweepy\streaming.py", line 294, in _run
raise exception
File "C:\Program Files (x86)\Python36-32\lib\site-packages\tweepy\streaming.py", line 263, in _run
self._read_loop(resp)
File "C:\Program Files (x86)\Python36-32\lib\site-packages\tweepy\streaming.py", line 324, in _read_loop
self._data(next_status_obj)
File "C:\Program Files (x86)\Python36-32\lib\site-packages\tweepy\streaming.py", line 297, in _data
if self.listener.on_data(data) is False:
File "C:\Program Files (x86)\Python36-32\lib\site-packages\tweepy\streaming.py", line 54, in on_data
if self.on_status(status) is False:
File "C:\Users\jsilvest\Documents\Python\compugenTwitterBot.py", line 32, in on_status
print(status.text)
File "C:\Program Files (x86)\Python36-32\lib\idlelib\run.py", line 345, in write
return self.shell.write(s, self.tags)
File "C:\Program Files (x86)\Python36-32\lib\idlelib\rpc.py", line 604, in __call__
value = self.sockio.remotecall(self.oid, self.name, args, kwargs)
File "C:\Program Files (x86)\Python36-32\lib\idlelib\rpc.py", line 216, in remotecall
return self.asyncreturn(seq)
File "C:\Program Files (x86)\Python36-32\lib\idlelib\rpc.py", line 247, in asyncreturn
return self.decoderesponse(response)
File "C:\Program Files (x86)\Python36-32\lib\idlelib\rpc.py", line 267, in decoderesponse
raise what
UnicodeEncodeError: 'UCS-2' codec can't encode characters in position 138-138: Non-BMP character not supported in Tk
有人解决过这个问题吗?
我正在使用 windows 10 和 运行 Python3
答案是...由@Mark Tolonen 提供
尝试使用 Tweepy 时不要使用 IDLE
不支持表情符号。
尝试使用不同的 IDE,例如 PyCharm。我成功地使用了 PyCharm,而且我相信其他非 IDLE 的 IDE 也会支持它。
谢谢马克·托洛宁
所以我正在尝试使用 python 和 tweepy 包制作一个 Twitter 机器人。
但是,我不断收到 UnicodeEncodeError。
发生错误是因为 python 不能 read/understand 表情符号传递到我通过流提取的推文中。
我已经用类似的问题搜索了所有其他问题,但发布的每个解决方案都不适用于我给定的代码。
我得到的最接近的是使用此处找到的代码 (
non_bmp_map = dict.fromkeys(range(0x10000, sys.maxunicode + 1), 0xfffd)
然而,即使我能够看到一些 em
,我仍然收到错误消息 import tweepy
from unicodedata import normalize, unicodedata
from tweepy import OAuthHandler
from tweepy import StreamListener
from tweepy import Stream
import sys
#Variables for each required KEY, secret and token
consumer_key = ""
consumer_secret = ""
access_token = ""
access_token_secret = ""
#Set up OAuth and integrate with API
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
class MyStreamListener(tweepy.StreamListener):
def on_status(self, status):
print(status.text)
def on_error(self, status_code):
if status_code == 420:
return False
non_bmp_map = dict.fromkeys(range(0x10000, sys.maxunicode + 1), 0xfffd)
myStream = tweepy.Stream(auth=api.auth,listener = MyStreamListener())
start_stream = myStream.filter(track=['Trump'],async=True)
print(str(start_stream).translate(non_bmp_map))
#write a tweet to push to account
#tweet = "I just felt like running!"
#api.update_status(status=tweet)
这是我收到的错误代码:
Exception in thread Thread-1:
Traceback (most recent call last):
File "C:\Program Files (x86)\Python36-32\lib\threading.py", line 916, in _bootstrap_inner
self.run()
File "C:\Program Files (x86)\Python36-32\lib\threading.py", line 864, in run
self._target(*self._args, **self._kwargs)
File "C:\Program Files (x86)\Python36-32\lib\site-packages\tweepy\streaming.py", line 294, in _run
raise exception
File "C:\Program Files (x86)\Python36-32\lib\site-packages\tweepy\streaming.py", line 263, in _run
self._read_loop(resp)
File "C:\Program Files (x86)\Python36-32\lib\site-packages\tweepy\streaming.py", line 324, in _read_loop
self._data(next_status_obj)
File "C:\Program Files (x86)\Python36-32\lib\site-packages\tweepy\streaming.py", line 297, in _data
if self.listener.on_data(data) is False:
File "C:\Program Files (x86)\Python36-32\lib\site-packages\tweepy\streaming.py", line 54, in on_data
if self.on_status(status) is False:
File "C:\Users\jsilvest\Documents\Python\compugenTwitterBot.py", line 32, in on_status
print(status.text)
File "C:\Program Files (x86)\Python36-32\lib\idlelib\run.py", line 345, in write
return self.shell.write(s, self.tags)
File "C:\Program Files (x86)\Python36-32\lib\idlelib\rpc.py", line 604, in __call__
value = self.sockio.remotecall(self.oid, self.name, args, kwargs)
File "C:\Program Files (x86)\Python36-32\lib\idlelib\rpc.py", line 216, in remotecall
return self.asyncreturn(seq)
File "C:\Program Files (x86)\Python36-32\lib\idlelib\rpc.py", line 247, in asyncreturn
return self.decoderesponse(response)
File "C:\Program Files (x86)\Python36-32\lib\idlelib\rpc.py", line 267, in decoderesponse
raise what
UnicodeEncodeError: 'UCS-2' codec can't encode characters in position 138-138: Non-BMP character not supported in Tk
有人解决过这个问题吗?
我正在使用 windows 10 和 运行 Python3
答案是...由@Mark Tolonen 提供
尝试使用 Tweepy 时不要使用 IDLE
不支持表情符号。
尝试使用不同的 IDE,例如 PyCharm。我成功地使用了 PyCharm,而且我相信其他非 IDLE 的 IDE 也会支持它。
谢谢马克·托洛宁