2017-06-16 81 views
1

此代碼將搜索具有特定關鍵字的推文,並提取與我的CSV文件中的關鍵字集相匹配的最相關的推文。每當我嘗試僅使用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']) 

我得到這個錯誤的所有時間:

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

主要錯誤是在k=(status.text)

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

我建議你重新發布的問題,以節省您的機密數據。刪除所有敏感信息 –

+0

它告訴你問題是什麼,不是? 'status'是一個字符串,所以你不能'status.text'。它已經是文字 – patrick

回答

0

status是JSON格式的字符串,來訪問你有它的元素使用json模塊對其進行解碼。

相反的:

k=(status.text) 

你應該這樣做:

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

謝謝你。現在我在doc ['NEET'] [j]中得到txt2的這個錯誤:' UnboundLocalError:在賦值之前引用的局部變量''' – Kumar

+0

是的,你必須首先給'j'賦值,也許是0 。但是你打算在doc ['NEET'] [j]'中爲txt2做些什麼?因爲你似乎正在改變自己循環內部的迭代器。目的不明確。 – lukess

+0

是的,現在這個錯誤已經解決了。我現在得到這個「** tweepy.error.TweepError:期望長度,找到意想不到的價值**」。你有什麼想法嗎? – Kumar

相關問題