Python-Json在精确键上匹配

2024-10-08 20:16:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python新手。在

我正在处理一个json响应,我将对每个结果的“user_id”键执行操作。有些结果没有“user_id”键,所以我必须在采取行动之前检查它们是否有,或者继续下一个结果。我遇到的问题是,还有其他密钥的名称中包含“user_id”。在

{
    }, 
    "results": [
        {
            "favorite_user_id": null, 
            "creation_tsz": 1425492797, 
            "target_user_id": 57182221
        }, 
        {
            "favorite_user_id": null, 
            "user_id": 57021365, 
            "creation_tsz": 1424864160, 
            "target_user_id": 57182221
        }, 
        {
            "favorite_user_id": null, 
            "user_id": 31767074, 
            "creation_tsz": 1424728865, 
            "target_user_id": 57182221
        }, 

等等。。。在

我一直在用这张支票:

^{pr2}$

但是当它找到其他包含user_id(如target_user_id)的键时,会产生误报。所以我需要对“user_id”键执行这个测试,要么精确匹配,要么“start with”匹配,因为包含“user_id”的其他键总是将它放在键名的末尾。在

我在这里读了很多关于这种匹配的答案,但是想知道如何在这个测试中做到这一点却很困难。在

谢谢你的帮助。在

根据要求,以下是r.content和r.json()的内容。”

r.以下内容 {“计数”:33,“结果”方面,{“最喜爱的用户用户用户uid”为空,“目标用户用户的用户id”为:5782221,“创建目的地的用户还U id”:1425492797},{“用户uid”:570213665,“最喜爱的用户用户用户的用户名”为空,“目标用户用户用户名”为:5782221,“创建”创造的“创造条件”为:1424864160},{“用户身份证号”为31767074,“最爱的用户用户用户的身份证号”为:null,“目标用户所用用户的用户身份证号”为:null,“目标用户所用用户用户的身份证号”为:5782221,创建的目的地为:5782221,创造的目的地:14247288665},{“用户用户身份证”用户5,“收藏夹用户_id”:空,“目标用户(U U U U U U U U U id”):5782221,“创设优酷Z”:1424708778},{“用户UID”:11096738,“最喜爱的用户UU U U id”为空,“目标用户U用户身份证号”为5782221,“创建活动所需资金的具体情况为:1424706888},{“用户UID”:23567712,“最爱的用户U用户UU id”为:null,“目标用户U用户身份证号”为:5782221,创作“创作”的tsz:1424699725},{“用户身份证号”:33175317,“最喜爱的用户U用户身份证号”3375317,“最喜爱的用户用户身份证号”的“用户身份证号:空:空”“:57182221,“创建”:1424677405},{“用户身份证”:34755908,“最喜爱的用户用户用户身份证”为空,“目标用户的用户身份证号”为:5782221,“创建本次活动的目的地为:1424675524},{“用户身份证号”:418999895,“最爱的用户用户用户的身份证号”为空,“目标用户用户用户身份证号”为:5782221,“创建”创设的“创建地”为:1424666480},{“用户身份证号”:4541411514,“最爱的用户的用户的身份证号”为:空,“目标用户所用用户用户的身份证号”:空,“目标用户所用用户身份证号”为:5782221,创建的目的地为:5782221“创建的目的地:142466468682 682},{“最喜爱u id“:空,“target_user_id”:57182221,“创建(U-tsz):1424647475},{“用户身份证号”:8656711,“最喜爱的用户用户用户名”的“空”无,“目标用户的用户身份证号”为空,“目标用户用户身份证号”为5782221,“创建不动产子z”:1424645878},{“用户身份证号”:8054406,“最喜爱的用户U用户身份证号”:空,“目标用户U用户身份证号”为:5782221,“创建UTSZ”:1424643341},{“用户身份证号”:52539991,“最喜爱的用户用户用户用户名”用户身份证号为:空:null,“目标用户用户用户用户用户身份证号”为:5782221 82221,“创建”创造的“创造”为“创造”为:创造的用户提供的“:1424543725},{“用户编号”:25719102,“最喜爱的用户UU U U U U id”:空,“目标客户U用户UID”:5782221,“创建UTSZ”:1424543406},{“用户UID”:29287388,“最喜爱的用户U用户身份证号”为空,“目标用户用户U用户身份证号”为:5782221,“创建UTSZ”:1424503218},{“用户用户身份证号”:32826696,“最爱的用户用户U用户身份证号”为:空,“目标用户U用户身份证号”为:5782221,创设的目的地为5782221,“创造的目的地”为:1424492383},{“用户身份证号”30241548,除除除除除除除除的用户外,用户的身份证外“:null,”目标用户_id“:57182221,“创建(U-tsz):1424443367},{“用户身份证号”:31395992,“最喜爱的用户用户用户名”为空,“目标用户用户用户名”为“空”,目标用户用户的身份证号为5782221,“创造创造的U-tsz”:1424437914},{“用户UID”:22811743,“最喜爱的用户用户U用户身份证号”:空,“目标用户用户U用户身份证号”为:5782221,“创建UTSZ”:1424436983},{“用户身份证号”:24661450,“最喜爱的用户用户用户用户身份证号”为24661450,“最喜爱的用户用户用户名用户身份证号”为:null,“目标用户用户用户用户用户身份证号”为:5782221 82221”的“创建1424419158},{“用户名”:52909867,“最喜爱的用户U用户UU id”:空,“目标用户用户UID”:5782221,“创建UTSZ”:1424412474},{“用户UU id”:20872810,“最喜爱的用户U用户身份证号”为空,“目标用户U用户身份证号”为:5782221,“创建UTSZ”的情况:1424404944},{“用户身份证号”:8023509,“最喜爱的用户U用户身份证号”:null,“目标用户U用户身份证号”为:5782221,创建的目的地为5782221,创建的目的地为:1424395275},{“用户身份证号”:55397081”,最喜欢的用户的用户的身份证号用户的身份证号为U U U-id号用户的用户“:null,”目标用户_id“:57182221,“创建(U tsz):1424388386},{“用户身份证号”:39617646,“最爱的用户用户U用户身份证号”为空,“目标用户用户用户名”为“空”,目标用户用户的身份证号为5782221,“创造的不动产子z”:1424384861},{“用户用户UID”:32033901,“最喜爱的用户用户U用户身份证号”为“空”,目标用户用户用户身份证号“:5782221”5782221,“创建UTSZ”:1424379711},{用户身份证号:115255852,“最喜爱的用户用户用户用户身份证号”为:null,“目标用户用户用户用户身份证号:5782221”5782221,“创建”创造“创建”的“创造”的1424376963},{“用户账号”:17015110,“收藏夹用户编号”:空,“目标用户编号”:57182221,“创建用户编号”:1424356740},{“用户编号”:35905186,“最喜欢的用户编号”:空,“目标用户编号”:57182221,“创建用户编号”:142305912},{“用户编号”:60537493,“收藏用户编号”:空,“目标用户编号”:57182221“空”的“目的地用户用户”身份证:5782221年“创造”的目的地为:1421247342},{“用户UU id”:54391049,“最爱的用户用户”id“:null,“目标用户所用用户的身份证号”:5782221,“创造创造创造所需的资金:1420559950}],“params”的主要目的是{“用户uid”:“lukectracy”,“极限”:“极限”:“100”,“偏移”,偏移:0,“页“:null},“类型““““个人““““个人“用户“个人“个人““““个人的“““基本限制“““有效的限制:100,“有效有效的“有效补偿:0,“下一个抵消““下一个抵消““下次补偿““除除除除除除除1个,“下一页”:null}

r.json()以下内容 {u‘u'u'count’:33,u‘类型’:u‘favoriteeuser’,u‘pagination’:{u‘有效‘u限制’:100,u‘有效u页面’:1,u‘下一个‘u’页面’:无,u‘有效’有效‘u’偏移’:0,u‘下一个‘u’偏移’:non},u‘params’:{u‘限制’:u‘100’,u‘用户’u‘u’u’的身份’:u‘卢卡能力’,u‘页面’:无,u‘偏移’‘偏移’:0},u‘结果’‘结果’:[{u‘最爱’用户‘用户’的身份’:无,无,u‘创作’创作‘创作’:142549279797979‘创作’的7个,u'u'target\uuser'u id':5782221},{u'favority\u user unu id':None,u'user'user'u id':5702365,u'creation\u'u'Creatu u-u:1424864160,u'target\u-user-user-id':5782221221},{u'最爱的用户u-user-id':None,u'user'用户名':31767074,u'创作u-创造u-tsz':14247288665,u'目标用户用户uid'uid':5782221221},{u'最喜爱的用户u用户的身份证号':无,u'无,u'用户的用户身份证号':3987089《创造》:1424708778,u'u'target\uuser'u id':5782221},{u'favorit unu user unu id':None,u'user'user unu id':11096738,u'creation_u'creation_的子公司:1424706888,u'target\u用户的用户身份证号:5782221221},{u'最爱的用户u用户u用户名':23567712,u'创作u'u'创作':1424699725,u'目标用户的用户的身份证号':5782221},{u'最喜爱的用户的用户的身份证号'':无,无,u'用户'用户'用户的身份证号':33175757575757533175用户'用户'用户'317,u'creation_tsz':1424677405,u'u'target'u user'u id':5782221},{u'favorit unu user unu id':None,u'user'user'u id':34755908,u'creation_'u'creation_-tsz':1424675524,u'target_user-user'u id':5782221221},{u'最爱的用户u用户uid':无,u'用户的身份证号':418999895,u'创造u的创作u'创造的':142466666480,u'目标用户的用户的身份证号':5782221221},{u'最喜爱的用户的用户的身份证号''无':无,u'用户'用户'用户'1514年,《创造》第1424664682页,u'u'target\u用户用户名:5782221},{u'favorit\u-user\u id':None,u'creation_-tsz':1424647475,u'target\u用户的用户身份证号:5782221},{u'最喜爱的用户用户用户身份证号':无,u'用户用户'uid':8656711,u'创建创建u的':142464587878,u'目标用户u用户的身份证号':5782221},{u'最喜爱的用户的用户'用户的身份证号''无,u'用户'用户':805440406,u'创造utsz''无,u'创造'用户':8054406,u'创建'创造1424643341,u'target_user_id':57182221},{u‘最喜爱的用户用户用户’id’:None,u‘用户用户’id’:52539991,u‘创建’u’创造‘u’tsz’:1424543725,u‘目标用户’用户‘u id’:5782221},{u‘最喜爱的用户用户用户用户’id’:无,u‘用户’用户身份证号’:25719102,u‘创建’u’创建‘u-tsz’:1424543406,u‘目标用户u用户的身份证号’:5782221},{u‘最喜爱的用户’用户‘用户’的身份证号’:无,u‘用户’用户的身份证号’:29287388,u‘创作’创作‘创作’的‘创作‘创作’的‘创作‘创作’没有‘创作‘创作,u'target_user_id':57182221},{u'favorite_user_id':无,u‘用户用户’身份证’:32826696,u‘创建’u’:1424492383,u‘目标用户’用户‘u’id’:5782221},{u‘最喜爱的用户’用户‘u id’:无,u‘用户’用户身份证号’:30241548,u‘创造’u’创造‘u’创造‘u’:1424443367,u‘目标用户’用户‘u’id’:5782221221},{u‘最爱的用户‘u用户’id’:无,u‘用户’用户‘用户’id’:31395992’,u‘创建’创建‘u’:142444437914,u‘目标’目标‘用户’用户‘用户’身份’:571’:574437914’:571‘目标’:571 82221},{u'favorite_user_id':无,u‘u’user’u‘user’id’:22811743,u‘creation’u tsz’:1424436983,u‘target’u user‘u user’id’:5782221},{u‘Favority’u user‘u用户’id’:246661450,u‘创建’u’创建‘u’:1424419158,u‘目标用户’用户‘u’id’:5782221221},{u‘最爱的用户’用户‘u id’:无,u‘用户’用户’id’:52909867,u‘创建’创建‘u’tsz’:142441247474,u‘目标‘目标用户’u用户‘用户‘用户’’:5782221221 221}}}您‘目标用户’的目的‘{u'favorite_user_id':无,u'user_id':20872810,u‘创造’u‘创造’:1424404944,u‘目标用户’用户‘u id’:5782221},{u‘最喜爱的用户用户用户uid’:无,u‘用户用户身份证’:8023509,u‘创建’u’创建‘u’:14243995275,u‘目标用户’用户‘u’目标用户‘u id’:5782221},{u‘最爱的用户用户用户uid’:无,u‘用户用户身份证’:55397081,u‘创建’创造‘u’tsz’:1424388386,u‘目标用户’用户的身份’:5782221221221},{u‘最喜爱的用户u用户用户用户用户用户用户用户用户用户用户用户u id':无,u'user_id':39617646,u'creation'u'creation\u tsz':1424384861,u‘目标用户用户’id’:5782221},{u‘最喜爱的用户用户用户’id’:无,u‘用户用户’id’:32033901,u‘创建’u’创建‘u’:1424379711,u‘目标用户’用户‘u id’:5782221},{u‘最爱的用户用户用户’‘u id’:无,u‘用户‘用户’id’:115255852,u‘创建’创建‘u’tsz’:1424376963,u‘目标用户’用户’id’:5782221221221},{u‘最喜爱的用户u用户用户用户用户用户用户用户用户用户用户用户uid':无,u'user_id':17015110,u'creation_tsz':1424356740,u'target_user_id':57182221},{u'favorite_user_id':无,u'user_id':35905186,u'creation_tsz':1423059122,u'target_user_id':57182221},{u'favorite_user_id':无,u'user_id':60537493,u'creation_tsz':14222989901,u'target_user_id':57182221},{u'favorite_user_id':无,u'user_id':22852591,u'creation_tsz':1421247342,u'target_user_id':57182221},{u'favorite_user_id':None,u'user_id':54391049,u'creation_tsz':1420559950,u'target_user_id':57182221}]}


Tags: 用户idtarget目标uidnullfavorite用户名
3条回答

关键问题是您仍然将JSON作为字符串处理。如果您先将其解码为结构化数据,则处理起来会容易得多:

import json
jdata = json.loads(response_json)
for result in jdata:
    if result.has_key('user_id'):
        # and so on...

您描述的行为似乎表明您使用的是字符串,而不是dict,检查字符串result是否包含字符串user_id。在

# We don't want to match this:
result = 'junk___user_id___junk'
'user_id' in result   # True
'user_id' == result   # False

# We __do__ want to match this:
result = 'user_id'                                                                                                                                                                     
'user_id' in result   # True
'user_id' == result   # True

看看使用字典时会发生什么,它的行为与您预期的一样:

^{pr2}$

你用json解析库解析过json吗?你是在处理真正的python指令还是在处理字符串?在

停止迭代键。映射上的包含检查比较键。在

if 'user_id' in response_json["results"]:

相关问题 更多 >

    热门问题