使用python和twitter api获取tweet对象。
我有一个包含tweets的文件(tweetfile=a.txt,在我的计算机上),我正试图通过对象循环来获取文本。我用tweetObj.keys()检查了twitter对象以查看键,并且“text”存在;但是,当我尝试使用tweetObj['text']获取单个文本时,我得到了KeyError:'text'
代码:
for line in tweetfile:
tweetObj = json.loads(line)
keys = tweetObj.keys()
print keys
tweet = tweetObj['text']
print tweet
以下是输出:
[u'contributors', u'truncated', u'text', u'in_reply_to_status_id', u'id', u'favorite_count', u'source', u'retweeted', u'coordinates', u'entities', u'in_reply_to_screen_name', u'id_str', u'retweet_count', u'in_reply_to_user_id', u'favorited', u'user', u'geo', u'in_reply_to_user_id_str', u'possibly_sensitive', u'lang', u'created_at', u'filter_level', u'in_reply_to_status_id_str', u'place']
@awe5sauce my dad was like "so u wanna be in a relationship with a 'big dumb idiot'" nd i was like yah shes the bae u feel lmao
[u'delete']
Traceback (most recent call last):
File "C:\apps\droid\a1\tweets.py", line 34, in <module>
main()
File "C:\apps\droid\a1\tweets.py", line 28, in main
tweet = tweetObj['text']
KeyError: 'text'
我不知道该怎么做,因为它看起来只打印了一条推文。问题是,为什么在键存在的地方会发生这种情况,并且似乎返回了一个值,但不是针对所有实例,我如何将其更正为可以使用该键访问所有行的值?
循环中创建了两个词典,每行一个。第一个有
text
,第二个只有'delete'
键。它没有'text'
键。因此出现错误消息。更改为:
所以,如果您只对包含
text
的行感兴趣,则可能需要使用[ json.loads(l)['text'] for l in tweetfile if 'text' in json.loads(l) ]
或者
'\n'.join([ json.loads(l)['text'] for l in tweetfile if 'text' in json.loads(l) ])
或者更好
[ json.loads(l).get('text') for l in tweetfile]
相关问题 更多 >
编程相关推荐