2014-10-29 3 views
3

При получении данных Twitter для конкретного арабского ключевого слова следующим образом:Unicode Ошибка декодирования при получении данных с использованием Twitter Python

#imports 
from tweepy import Stream 
from tweepy import OAuthHandler 
from tweepy.streaming import StreamListener 

#setting up the keys 
consumer_key = '………….' 
consumer_secret = '…………….' 
access_token = '…………..' 
access_secret = '……...' 

class TweetListener(StreamListener): 
    # A listener handles tweets are the received from the stream. 
    #This is a basic listener that just prints received tweets to standard output 

    def on_data(self, data): 
     print (data) 
     return True 

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

    #printing all the tweets to the standard output 
    auth = OAuthHandler(consumer_key, consumer_secret) 
    auth.set_access_token(access_token, access_secret) 

    stream = Stream(auth, TweetListener()) 
    stream.filter(track=['سوريا']) 

Я получил сообщение об ошибке:

Traceback (most recent call last): 
File "/Users/Mona/Desktop/twitter.py", line 29, in <module> 
stream.filter(track=['سوريا']) 
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site- packages/tweepy/streaming.py", line 303, in filter 
encoded_track = [s.encode(encoding) for s in track] 
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd8 in position 0: ordinal not in range(128) 

Пожалуйста, любая помощь !!

ответ

6

Я посмотрел исходный код для tweepy и нашел строку в источнике для Stream, что seems to cause the problem. Строка из метода фильтра. Когда вы вызываете stream.filter(track=['سوريا']) в свой код, Stream вызывает s.encode('utf-8'), где s = 'سوريا' (глядя на исходный код фильтра, вы будете использовать utf-8 по умолчанию). Именно в этот момент код генерирует исключение.

Чтобы исправить это, нам нужно использовать строку Unicode.

t = u"سوريا" 
stream.filter(track=[t]) 

(Я просто поместил вашу строку в переменную t для ясности).

+0

Большое вам спасибо :) Это работает. – Hana

+0

@ Хана, вы должны принять этот ответ! – Luigi

Смежные вопросы