Твипи, UnicodeEncodeError USC-2

Итак, я пытаюсь создать твиттер-бота, используя python и пакет tweepy. Однако я продолжаю получать UnicodeEncodeError. Ошибка возникает из-за того, что python не может прочитать / понять смайлики, переданные в твит, который я получил через поток. Я просмотрел все остальные вопросы с похожими проблемами, но каждое опубликованное решение не работает для моего данного кода. Самое близкое, что я получил, - это использовать этот код здесь, найденный здесь (Кодек 'UCS-2' не может кодировать символы в позициях 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


person Julian Silvestri    schedule 24.08.2017    source источник
comment
... И теперь у нас есть ваши коды авторизации в Твиттере.   -  person Ignacio Vazquez-Abrams    schedule 24.08.2017
comment
ой @ $ ## @%, черт возьми, хорошо, я просто удалю твиттер-бота. Хорошо, не очень сложно создать новый. Все хорошо, удаленный кризис предотвращен   -  person Julian Silvestri    schedule 24.08.2017
comment
К сожалению, редактирования вопроса недостаточно; история редактирования общедоступна.   -  person Ignacio Vazquez-Abrams    schedule 24.08.2017
comment
Сообщение об ошибке ясное. Тк их не поддерживает. Вы пытаетесь печатать в режиме ожидания? Используйте другую IDE.   -  person Mark Tolonen    schedule 24.08.2017
comment
@Mark Tolonen, я совершенно не думал об этом !! Оно работает. Я решил использовать PYCHARM, и я могу искать по API твиттеров и извлекать нужную мне информацию, не получая UnicodeEncodeError. Спасибо за комментарий!   -  person Julian Silvestri    schedule 24.08.2017
comment
@MarkTolonen, как вы думаете, почему по прошествии всего этого времени Tk не поддерживает ничего, кроме BMP?   -  person Mark Ransom    schedule 24.08.2017
comment
@MarkRansom Ни один разработчик не вызвался исправить это?   -  person Mark Tolonen    schedule 25.08.2017


Ответы (1)


Ответ ЕСТЬ ... Предоставлено @Mark Tolonen

Не используйте IDLE при попытке использовать Tweepy

Он не поддерживает смайлики.

Попробуйте использовать другую IDE, например PyCharm. Мне удалось использовать PyCharm, и я уверен, что другие IDE, не являющиеся IDLE, также будут его поддерживать.

Спасибо, Марк Толонен

person Julian Silvestri    schedule 24.08.2017