2015-04-18 78 views
1

我想用我從twitter收集的數據分析一個json文件,但是當我嘗試搜索一個關鍵字時說它找不到,但我可以看到它在那裏。我嘗試了這兩種不同的方式。我會在下面發表。任何建議都會很棒。在Python中閱讀Twitter json文件時出現KeyErrors

嘗試#1

import sys 
import os 
import numpy as np 
import scipy 
import matplotlib.pyplot as plt 
import json 
import pandas as pan 

tweets_file = open('twitter_data.txt', "r") 
for line in tweets_file: 
    try: 
      tweet = json.loads(line) 
      tweets_data.append(tweet) 
    except: 
      continue 
tweets = pan.DataFrame() 
tweets['text'] = map(lambda tweet: tweet['text'], tweets_data) 

嘗試#2:同前面的步驟,但沒有一個循環,而不是

t=tweets[0] 
tweet_text = [t['text'] for t in tweets] 

錯誤

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "<stdin>", line 1, in <lambda> 
KeyError: 'text' 

如果我打印tweets_data,這就是我所看到的。 '文字'等,絕對是那裏。我錯過了一個角色嗎?

>>> print(tweet_data[0]) 
    {u'contributors': None, u'truncated': False, u'text': u'RT 
    @iHippieVibes: \u2b50\ufe0fFAV For This Lace Cardigan \n\nUSE Discount 
    code for 10% off: SOLO\n\nFree Shipping\n\nhttp://t.co/d8kiIt3J5f 
    http://t.c\u2026', u'in_reply_to_status.... 

(粘貼只輸出的一部分)

謝謝!任何建議將不勝感激。

回答

2

不是全部你的推文有一個'text'的關鍵。過濾那些身體或使用dict.get()返回缺省:

tweet_text = [t['text'] for t in tweets if 'text' in t] 

tweet_text = [t.get('text', '') for t in tweets] 
+0

謝謝,Martjin!我會嘗試他們dict.get()函數 – user4803385