Python KeyError:';用户';——在部分文件已经处理之后

Python KeyError:';用户';——在部分文件已经处理之后,python,json,twitter,Python,Json,Twitter,我正在尝试使用Python从Twitter创建一个转发/提及网络,并且我已经能够理解其中的很多内容。除了,现在我已经开始从一个小样本到一个大样本测试我的代码,我得到了一个奇怪的键错误,我不理解。我相信我可能错过了一些简单的东西,但任何帮助都将不胜感激 目标是通读推文,并在用户之间建立关系,如果一个用户首先转发另一个用户,然后,如果没有转发,则在一个推文中的用户之间建立关系并相互提及(包括在一条推文的新行中多次提及)。如果存在转发或提及,只打印推文作者 我得到的错误如下: Traceback (m

我正在尝试使用Python从Twitter创建一个转发/提及网络,并且我已经能够理解其中的很多内容。除了,现在我已经开始从一个小样本到一个大样本测试我的代码,我得到了一个奇怪的键错误,我不理解。我相信我可能错过了一些简单的东西,但任何帮助都将不胜感激

目标是通读推文,并在用户之间建立关系,如果一个用户首先转发另一个用户,然后,如果没有转发,则在一个推文中的用户之间建立关系并相互提及(包括在一条推文的新行中多次提及)。如果存在转发或提及,只打印推文作者

我得到的错误如下:

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"

您的一个
tweet
对象没有
'user'
键。在你的代码中考虑到这一点。@MartijnPieters是的,你是对的。很明显,我的数据是有速率限制的,有些行只是{“limit”:{“track”:30。删除这些行后,它运行时没有错误。