Python 使用twitter api解析推文时出现字典键错误
所以我只是按照一个简单的教程来处理tweet。我只是试图解析推文,但是当我使用print(dicto['user'])时,它会打印一些推文,然后抛出一个关键错误。奇怪的是,它总是在第48个之后。如果我只是简单地把整本词典打印出来,它就会愉快地打印出来。紧接着第48条信息是traceback(最近一次通话最后一次)Python 使用twitter api解析推文时出现字典键错误,python,api,dictionary,twitter,tweets,Python,Api,Dictionary,Twitter,Tweets,所以我只是按照一个简单的教程来处理tweet。我只是试图解析推文,但是当我使用print(dicto['user'])时,它会打印一些推文,然后抛出一个关键错误。奇怪的是,它总是在第48个之后。如果我只是简单地把整本词典打印出来,它就会愉快地打印出来。紧接着第48条信息是traceback(最近一次通话最后一次) 我有点搞不清楚这里发生了什么。键错误意味着键不在dict中。您可以使用dicto.get('user'),如果键丢失,它会返回None,而不是引发KeyError。你也可以给.get方
我有点搞不清楚这里发生了什么。键错误意味着键不在dict中。您可以使用
dicto.get('user')
,如果键丢失,它会返回None
,而不是引发KeyError
。你也可以给.get
方法一个默认的返回值,而不是None
。啊,太棒了,我不知道get。我想知道我可以为get指定一个辅助键吗?所以User是键,但值是另一个字典,我想得到['User']['location'],例如,当mt.get返回我指定的NaN值时,数据中似乎包含{“limit”:{“track”:82,“timestamp_ms”:“1529159543788”},所以我将研究这是什么。谢谢你的建议,非常有用。我很笨,我可以像往常一样将get分配给变量并通过子键访问:)不,你不能将辅助键传递给get
。但是如果d:loc=d['location'],您可以执行类似于d=dicto.get('user')
的操作,假设dicto['user']
存在,它总是有一个“location”键。
from tweepy.streaming import StreamListener
from tweepy import OAuthHandler
from tweepy import Stream
import pw
import json
access_token = pw.access_token
access_token_secret = pw.access_token_secret
consumer_key = pw.consumer_key
consumer_secret = pw.consumer_secret
class StdOutListener(StreamListener):
def on_data(self, data):
dicto = json.loads(data)
print(dicto['user'])
return True
def on_error(self, status):
print(status)
auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
stream = Stream(auth, StdOutListener())
stream.filter(track="music")