Codificação utf-8 do filtro Tweepy
Pergunta
Tenho trabalhado com o Tweepy e quando executo o filtro do tweepy passando caracteres não-ascii ocorre um erro.Por exemplo, usando o seguinte comando, recebi o erro abaixo:
Meu código:
auth = tweepy.OAuthHandler(apikey[0], apikey[1])
auth.set_access_token(apikey[2], apikey[3])
api = tweepy.API(auth)
sapi = tweepy.streaming.Stream(auth, CustomStreamListener())
sapi.filter(track=['eleições'])
Meu erro:
Traceback (most recent call last):
File "./TwitterStreamingAPI.py", line 81, in <module>
sapi.filter(track=['eleições'])
File "/usr/local/lib/python2.7/dist-packages/tweepy/streaming.py", line 303, in filter
encoded_track = [s.encode(encoding) for s in track]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 4: ordinal not in range(128)
Eu ficaria feliz se alguém me ajudasse em como resolvê-lo.
Desde já, obrigado,
Thiago.
Solução
Tente substituir a linha do filtro por:
sapi.filter(track=[u'eleições'])
Um faz .encode()
para converter de unicode
para str
.Um faz .decode()
para converter de str
para unicode
.Já que tweepy está tentando .encode()
, deveríamos alimentá-lo com um unicode
.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow