Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用twitter api解析推文时出现字典键错误_Python_Api_Dictionary_Twitter_Tweets - Fatal编程技术网

Python 使用twitter api解析推文时出现字典键错误

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方

所以我只是按照一个简单的教程来处理tweet。我只是试图解析推文,但是当我使用print(dicto['user'])时,它会打印一些推文,然后抛出一个关键错误。奇怪的是,它总是在第48个之后。如果我只是简单地把整本词典打印出来,它就会愉快地打印出来。紧接着第48条信息是traceback(最近一次通话最后一次)


我有点搞不清楚这里发生了什么。

键错误意味着键不在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")