2017-04-03 46 views
0

我使用本教程中給出的代碼: http://adilmoujahid.com/posts/2014/07/twitter-analytics/Twitter的流API:輸出有數據沒有鳴叫文本

的目的是收集使用Twitter的流API的數據,存儲在JSON格式的數據,然後從這些數據中獲取推文。在本教程的第二步,將使用此代碼來獲得鳴叫:

tweets_data = [] 
tweets_file = open(tweets_data_path, "r") 
for line in tweets_file: 
    try: 
     tweet = json.loads(line) 
     tweets_data.append(tweet) 
    except: 
     continue 

tweets = pd.DataFrame() 
tweets['text'] = map(lambda tweet: tweet['text'], tweets_data[0:2377]) 

我使用在數據幀的鳴叫tweets_data的一個子集。然而,在tweets_data的索引2376,而不是包含約鳴叫及其文本數據,它具有:

{u'limit': {u'track': 4, u'timestamp_ms': u'1491153253907'} 

因此,使用tweets_data [0:2377]返回KeyError異常: '文本'。索引2376處的字典元素不像其他元素那樣具有u'text';使用索引2376以下的任何子集。不過,我不能跳過2376,因爲在我的JSON數據中有更多元素。使用tweets_data [0:2377] + tweets_data [2377:len(tweets_data)]也會返回KeyError:'text'。

那麼元素2376發生了什麼?在數據框中創建「文本」列之前,我應該過濾掉其中沒有u'text'的元素嗎?或者,還有更好的方法?

回答

1

該元素看起來像api調用的日誌數據。

就檢查文本存儲每一行​​之前,像這樣:

if 'text' in tweet: 
    tweets_data.append(tweet) 
相關問題