【问题标题】:Tweepy, UnicodeEncodeError USC-2Tweepy,UnicodeEncodeError USC-2
【发布时间】:2017-08-25 03:19:07
【问题描述】:

所以我正在尝试使用 python 和 tweepy 包制作一个 twitter 机器人。 但是,我不断收到 UnicodeEncodeError。 发生错误是因为 python 无法读取/理解传递到我通过流提取的推文中的表情符号。 我已经搜索了所有其他具有类似问题的问题,但发布的每个解决方案都不适用于我给定的代码。 我得到的最接近的是使用这里找到的代码('UCS-2' codec can't encode characters in position 1050-1050

non_bmp_map = dict.fromkeys(range(0x10000, sys.maxunicode + 1), 0xfffd)

但是,即使我能够看到一些错误,我仍然会收到错误

    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

【问题讨论】:

  • ...现在我们有了你的 Twitter 验证码。
  • 哦@$##@% 上帝该死的好吧,我只会删除 twitter bot 没关系,制作一个新的并不难。一切都好,避免了已删除的危机
  • 很遗憾编辑问题是不够的;编辑历史是公开可见的。
  • 错误信息很清楚。 Tk 不支持它们。您想在空闲时打印?使用不同的 IDE。
  • @Mark Tolonen ,我完全没有想到!有用。我选择使用 PYCHARM,并且能够搜索 twitters API 并提取我想要的信息,而不会收到 UnicodeEncodeError。感谢您的评论!

标签: python error-handling tweepy


【解决方案1】:

答案是...感谢@Mark Tolonen

尝试使用 Tweepy 时不要使用 IDLE

它不支持表情符号。

尝试使用其他 IDE,例如 PyCharm。我成功使用了 PyCharm,而且我确信其他非 IDLE 的 IDE 也会支持它。

谢谢马克·托洛宁

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-27
    • 2016-11-27
    • 1970-01-01
    • 2019-03-01
    • 2012-05-03
    • 1970-01-01
    相关资源
    最近更新 更多