Member 13647869 Ответов: 2

Как мне декодировать Твиттер из API Twitter?


Я запускаю следующий код, который дает мне твиты, содержащие слово cat, однако в некоторых моментах я получаю ошибку

Код таков:

import tweepy
from tweepy import Stream
from tweepy import OAuthHandler
from tweepy.streaming import StreamListener
import json
import sentmod as s

#consumer key, consumer secret, access token, access secret.
ckey= "xxxxx"
csecret="xxxx"
atoken="xxxxx"
asecret="xxxxx"

class listener(StreamListener):
    
    def on_data(self, data):
        all_data = json.loads(data)
        tweet = all_data["text"]       
        sentiment_value, confidence = s.sentiment(tweet)
        tweet.encode('utf-8', 'ignore')
        if "RT" in tweet:
            pass
        else:
            tweets=open("tweets.txt","a",encoding="utf-8")
            tweets.write(tweet)
            tweets.write('\n')
            tweets.write(str(sentiment_value))
            tweets.write('\n')
            tweets.write(str(confidence))
            tweets.write('\n\n\n')
            tweets.close()
            print(tweet, sentiment_value, confidence)
            if confidence*100 >= 60:
                output = open("twitter-out.txt","a")
                output.write(sentiment_value)
                output.write('\n')
                output.close()
                return True


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

auth = OAuthHandler(ckey, csecret)
auth.set_access_token(atoken, asecret)

twitterStream = Stream(auth, listener())
twitterStream.filter(track=['Cat'],languages=['en'])  #locations=[]





Я получаю следующую ошибку после нескольких твитов:



печати(твит, sentiment_value, уверенность в себе)
UnicodeEncodeError: кодек 'UCS-2' не может кодировать символы в позиции 44-44: не bmp-символ не поддерживается в Tk

Что я уже пробовал:

декодирование и кодирование с помощью utf-8 и utf-16, но не сработало

2 Ответов

Рейтинг:
0

David_Wimbley

Я полагаю, что поиск в google будет вашим лучшим маршрутом. Учитывая, что я не собираюсь запускать ваш код, чтобы увидеть твит-дамп, который он создает, весьма вероятная проблема заключается в том, что данные, которые вы получаете, являются эмодзи (которые я прочитал в первые 5 минут поиска в Google) и не поддерживаются в кодеке UCS-2.

python - кодек 'UCS-2' не может кодировать символы в позиции 1050-1050 - переполнение стека[^]

Ошибка Unicode" Non-BMP character " · проблема #16 · geduldig/TwitterAPI · GitHub[^]

Не удается кодировать не-BMP символ · выпуск #624 · tweepy/tweepy · GitHub[^]

UnicodeEncodeError: кодек 'UCS-2' не может кодировать символы в позиции 44-44: не-BMP символ не поддерживается в Tk - Google Search[^]


Member 13647869

Я знаю, что. Я гуглил в течение последних двух дней, но каждый раз, когда я получаю метод, он не работает, хотя все в порядке, спасибо

David_Wimbley

Если вы знали это, почему вы не включили ничего из этого в то, что вы пробовали. Первая ссылка "Вы могли бы использовать таблицу перевода, чтобы сопоставить все, что находится за пределами BMP, с заменяющим символом:" кажется, это то, что решит вашу проблему, но ваш код этого не отражает.

Member 13647869

Я знал, что в google есть ответы.

David_Wimbley

Тогда что же вы ищете? Эта первая ссылка, по-видимому, и есть то, что решит вашу проблему.

Рейтинг:
0

Member 13647869

Моя проблема заключалась в том, что я кодировал твиты с помощью utf-8, однако правильная кодировка-utf-16be, которую я взял из этой ссылки: