KeyError:'用户' - 部分文件已经处理完毕

时间:2014-05-08 17:50:29

标签: python json twitter

我试图使用Python从Twitter创建转发/提交网络,并且我已经能够随时找到很多内容。除了,我已经开始测试我的代码从一个小样本到一个更大的样本,我得到了一个我不明白的奇怪的KeyError。我确定我可能遗漏了一些简单的东西,但是我们将非常感谢任何帮助。

通过推文读取目标并在用户之间创建关系,如果首先一个用户转发另一个用户,那么,如果没有转发,则在一个用户之间创建一个关系(包括在一个用户中的多个提及单个推文)。如果存在转发或提及,请仅打印推文作者。

我得到的错误如下:

Traceback (most recent call last):
    File "...path/to/file.py", line 28, in <module>
        print tweet_time , "\t" , tweet['user']['screen_name'] , "\t" , "TWEET"
KeyError: 'user'

代码:

import json
import time

data = []

for line in open('tweets.json'):
    try:
        data.append(json.loads(line))
    except:
        pass

tweet = data[0]

tweet_time = time.strftime('%Y-%m-%d %H:%M:%S', time.strptime(tweet['created_at'],'%a %b %d %H:%M:%S +0000 %Y'))

for tweet in data:
    ## if the key 'retweeted_status' is in the dict, print 
    if tweet.has_key('retweeted_status'):
        print tweet_time , "\t" , tweet['user']['screen_name'] , "\t" , tweet['retweeted_status']['user']['screen_name'] , "\t" , "RETWEET"

    ## if there is a mention in the dict, print
    elif 'entities' in tweet and len(tweet['entities']['user_mentions']) > 0:
        for u2 in tweet['entities']['user_mentions']:
            print tweet_time , "\t" , tweet['user']['screen_name'] , "\t" , u2['screen_name'] , "\t" , "MENTION"

    ## if there is no retweet and no mention, print
    else:
        print tweet_time , "\t" , tweet['user']['screen_name'] , "\t" , "\t" , "TWEET"

0 个答案:

没有答案