从Tweepy解析大量JSON字符串或转换为dict / JSON格式

时间:2015-02-04 23:11:56

标签: python json bash twitter dictionary

我第一次使用Tweepy并且我是Python新手。 我在OAuth之后使用以下代码来使用Tweepy收集推文:

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_key, access_secret)
api = tweepy.API(auth)
file = open('SOTU1.txt', 'a')

class CustomStreamListener(tweepy.StreamListener):
def on_status(self, status):
    print status.text

def on_data(self, data):
    json_data = json.loads(data)
    file.write(str(json_data))

def on_error(self, status_code):
    print >> sys.stderr, 'Encountered error with status code:', status_code
    return True # Don't kill the stream

def on_timeout(self):
    print >> sys.stderr, 'Timeout...'
    return True # Don't kill the stream

结果文本文件如下所示,并作为一个字符串对象继续:

{u'contributors': None, u'truncated': False, u'text': u'Lost my cool today           
\U0001f602\U0001f63e like completely', u'in_reply_to_status_id': None, u'id': 
557709279751581696, u'favorite_count': 0, u'source': u'<a 
href="http://twitter.com/download/android" rel="nofollow">Twitter for 
Android</a>', u'retweeted': False, u'coordinates': {u'type': u'Point', 
u'coordinates': [-97.925459, 29.877993]}, u'timestamp_ms': u'1421803228687', 
u'entities': {u'user_mentions': [], u'symbols': [], u'trends': [], 
u'hashtags': [], u'urls': []}, u'in_reply_to_screen_name': None, u'id_str': 
u'557709279751581696', u'retweet_count': 0, u'in_reply_to_user_id': None, 
u'favorited': False, u'user': {u'follow_request_sent': None, 
u'profile_use_background_image': True, u'default_profile_image': False, u'id': 
1239731318, u'verified': False, u'profile_image_url_https': 

我尝试过在网站上提供的各种解决方案,虽然没有工作,因为它不是列表,而是字符串。我试图通过删除&#34; u&#39;&#34;来使其成为字典形式,但该对的右侧有未被&#34;&#34;包围的单词。

我的目标是从每条推文中提取文本和地理编码,我希望使用jq在bash中处理JSON文件。但截至目前,我无法将此数据提供给jq,并且很难确定哪一行来自一条推文。

提前致谢!

1 个答案:

答案 0 :(得分:0)

def on_data(self, data):
    json_data = json.loads(data)
    json.dump(json_data,my_file)

然后当你想要它回来

json_data = json.load(open("file.txt"))