我使用本教程中給出的代碼: 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'的元素嗎?或者,還有更好的方法?