2017-06-16 6 views
1

Ce code permet de rechercher des tweets avec un mot clé donné et d'extraire les tweets les plus pertinents correspondant à l'ensemble des mots clés de mon fichier CSV.Une erreur d'attribut se produit chaque fois que j'essaie d'extraire uniquement le tweet en utilisant Tweepy?

import tweepy 
from tweepy.streaming import StreamListener 
from tweepy import OAuthHandler 
from tweepy import Stream 
import pandas as pd 
import nltk 

def tokened(a): 
    return nltk.word_tokenize(a) 
i=0 
j=0 
doc = pd.read_csv('Finder.csv') 

#consumer key, consumer secret, access token, access secret. 
ckey="nothing" 
csecret="nothing" 
atoken="nothing" 
asecret="nothing" 
class listener(StreamListener): 

     def on_data(self, status): 

       k=(status.text) 
       z=tokened(k) 
       for txt in z: 

        for txt2 in doc['NEET'][j]: 
         j=j+1 
         if (txt.upper().lower() == 'RT'): 
          break 
         elif (txt.upper().lower() == txt2.upper().lower()): 
          api.update_status("Try", 
in_reply_to_status_id=status.id) 
          print(status.text) 



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

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



twitterStream = Stream(auth, listener()) 
twitterStream.filter(track=['Neet']) 

Je reçois cette erreur tout le temps:

k=(status.text) AttributeError: 'str' object has no attribute 'text'

L'erreur principale est k=(status.text):

AttributeError: 'str' object has no attribute 'text' 
+1

Je vous suggère de republier question pour vous enregistrer les données secrètes. Supprimer toutes les informations sensibles –

+0

Eh bien, il vous dit quel est le problème, non? 'status' est une chaîne, donc vous ne pouvez pas faire' status.text'. C'est déjà le texte – patrick

Répondre

0

status est une chaîne au format JSON, pour accéder à ses éléments que vous avez pour le décoder avec le module json.

Au lieu de:

k=(status.text) 

Vous devriez faire:

k = json.loads(status)['text'] 
+0

Merci l'homme. Maintenant je reçois cette erreur '' pour txt2 dans doc ['NEET'] [j]: UnboundLocalError: la variable locale 'j' référencée avant l'affectation '' – Kumar

+0

Oui, vous devez donner une valeur à 'j' d'abord, peut-être 0 Mais qu'est-ce que vous avez l'intention de faire avec '' pour txt2 in doc ['NEET'] [j] '? Parce que vous semblez changer l'itérateur à l'intérieur de sa propre boucle. Le but n'est pas clair. – lukess

+0

Oui, cette erreur est résolue maintenant. J'obtiens ceci maintenant "** tweepy.error.TweepError: Attendant la longueur, valeur inattendue trouvée **". Avez-vous des idées à ce sujet? – Kumar