python提取json中的值,在Python中从JSON提取特定值

时间:2024-10-04 19:40:50

从对API的调用结果(使用urllib2)中,我在Python中有一个JSON对象,如下所示:

results = (req).read()

json1 = (results)

这将生成一个包含以下内容的JSON对象(由于大小而被截断):

"/dochash-1/895ba8ff-4c32-3ae1-9615-9a9a9a1bcb39/cat/1":{

"_typeGroup":"topics",

"category":"/cat/Calais/Entertainment_Culture",

"classifierName":"Calais",

"categoryName":"Entertainment_Culture",

"score":1

},

"/genericHasher-1/b6a2d07d-133b-35ad-85e2-54d524e750cf":{

"_typeGroup":"entities",

"_type":"TVShow",

"name":"Hard Knocks",

"_typeReference":"/1/type/em/e/TVShow",

"instances":[

{

"detection":"[ New York Jets during the summer of 2010 on HBO's ]Hard Knocks[.\n]",

"prefix":" New York Jets during the summer of 2010 on HBO's ",

"exact":"Hard Knocks",

"suffix":".\n",

"offset":135,

"length":11

}

],

"relevance":0.5

},

"/genericHasher-1/802a1ebb-7fac-354f-b02f-6ef8442950d3":{

"_typeGroup":"entities",

"_type":"Organization",

"name":"New York Jets",

"organizationtype":"sports",

"nationality":"American",

"_typeReference":"/1/type/em/e/Organization",

"instances":[

{

"detection":"[ Tebow caught a few training camp glimpses of the ]New York Jets[ during the summer of 2010 on HBO's Hard]",

"prefix":" Tebow caught a few training camp glimpses of the ",

"exact":"New York Jets",

"suffix":" during the summer of 2010 on HBO's Hard",

"offset":86,

"length":13

}

],

"relevance":0.5

}

从此JSON中,仅当“ typeGroup” ==“ entities”时,我才想提取“ _type”和“ name”。

例如,对于上述JSON对象,输出应如下所示:

TVShow: Hard Knocks

Organization: New York Jets.

有人可以帮忙在Python中做到这一点吗?

[更新1]

根据Jatin的回答,我尝试了以下操作:

for key,value in ():

if value["_typeGroup"] == "entities":

print value['_type'], value['name']

但是,这会导致错误KeyError:'_typeGroup'

我试图查看键和值的打印方式,如下所示:

for key,value in ():

print key,value

这导致以下输出(仅显示一个键,值对):

/genericHasher-1/802a1ebb-7fac-354f-b02f-6ef8442950d3 {u'_typeReference': u'/1/type/em/e/Organization', u'_type': u'Organization', u'name': u'New York Jets', u'_typeGroup': u'entities', u'instances': [{u'suffix': u" during the summer of 2010 on HBO's Hard", u'prefix': u' Tebow caught a few training camp glimpses of the ', u'detection': u"[ Tebow caught a few training camp glimpses of the ]New York Jets[ during the summer of 2010 on HBO's Hard]", u'length': 13, u'offset': 86, u'exact': u'New York Jets'}], u'relevance': 0.5, u'nationality': u'American', u'organizationtype': u'sports'}

它似乎是嵌套的JSON。所以我尝试了以下方法来访问内部键值对,如下所示:

for key,value in ():

val1 = value

for key,value in ():

if value["_typeGroup"] == "entities":

print value['_type'], value['name']

但是,它引发以下错误:

TypeError: string indices must be integers

解决方案

我认为您会收到该错误,因为JSON中的某些值没有_typeGroup。试试这个:

for key,value in ():

if ("_typeGroup", "") == "entities":

print value['_type'], value['name']