потоковые твиты с проблемой твипов и арабских символов - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь получить арабские твиты с помощью библиотеки твипов в Python 3.6, с английским языком это работает отлично, но когда я пытаюсь получить арабские твиты, я столкнулся со многими проблемами, проблема с этим последним кодом заключается в том, что твиты с арабскими символами появляются as "\ u0635 \ u0651 \ u062a \ u0648 \ u0627"

Я попробовал несколько решений в Интернете, но никто не решил мою проблему, потому что большинство из них пытаются получить только «текст» твита, чтобы они могли исправить проблему кодирования напрямую только с текстом, но для меня хочу получить всю информацию в JSON

    from tweepy.streaming import StreamListener
    from tweepy import OAuthHandler
    from tweepy import Stream
    import json


    access_token = '-'
    access_token_secret = '-'
    consumer_key = '-'
    consumer_secret = '-'


    class StdOutListener(StreamListener):

        def on_data(self, data):
            print (data.encode("UTF-8")) 
            return True


        def on_error(self, status):
            print (status)


     if __name__ == '__main__':

        l = StdOutListener()
        auth = OAuthHandler(consumer_key, consumer_secret)
        auth.set_access_token(access_token, access_token_secret)
        stream = Stream(auth, l)

        stream.filter(  track=["عربي"]) 


 > $ python file.py > file2.txt

результаты в текстовом файле и в терминале:

{"creat_at": "Чт 17 января 12:12:16 +0000 2019", "id": 1085872428432195585, "id_str": "1085872428432195585", "text": "RT @MALHACHIMI: \ u0642 \ u0627 \ u029f \ u062d \ u0631 \ u0627 \ u0274 \ u0644 \ u0647 \ u0636 \ u0629 \ u0635 \ u0651 \ u062a \ u0648 \ u0627 \ u0627 \ u062f 1009 * .... и т.д.}

1 Ответ

0 голосов
/ 17 января 2019

Если я сделаю это с первым примером в вашем вопросе:

>>> print( "\u0635\u0648\u0651\u062a\u0648\u0627 ")
صوّتوا 

Арабский появляется. Но если вы отображаете dict на консоли, не указывая, как вы хотите, чтобы он отображался, Python будет просто использовать представление по умолчанию, которое использует набор символов ASCII, и все, что не печатается в этом наборе символов, будет представлено как escape-символы. Это потому, что если вы хотите закодировать эту строку в программе, у вашего редактора IDE могут возникнуть проблемы с арабским языком. Причина в том, что переключаться между порядком кода Python слева направо и порядком строки справа налево очень трудно. Информация не была потеряна или искажена, она просто отображается в формате с наименьшим общим знаменателем.

...