解析不会出现在每条记录中的JSON对象

时间:2014-04-01 16:20:42

标签: python json twitter

我已经从我试图使用python解析的Twitter Streaming API中获得了一些数据。在解析ALL记录中的对象时,我在大部分时间内成功完成了这项工作。但是,在尝试解析不在每个记录中的对象时,例如['coordinates']['entities']['hashtags'],我遇到了错误。

import json
import sys

def main():

    for line in sys.stdin:
        line = line.strip()

        data = ''

        try:
            data = json.loads(line)
        except ValueError as detail:
            continue

        if not (isinstance(data, dict)):
            ## not a dictionary, skip
            pass
        elif 'delete' in data:
            ## a delete element, skip for now.
            pass
        elif 'user' not in data:
            ## bizarre userless edge case
            pass
        else:
            print "\t".join([
            data['created_at'],
            data['user']['screen_name'],
            data['user']['id_str'],
            data['user']['lang'],
            data['text'],
            data['source']
            ]).encode('utf-8')

if __name__ == '__main__':
    main()

1 个答案:

答案 0 :(得分:2)

您可以使用data['coordinates'],而不是使用data.get('coordinates')

如果密钥不在字典中,则使用dict.get(key)将返回None,而不是提出KeyError