当前位置: 首页 > 面试题库 >

解析json并搜索它

姬浩渺
2023-03-14
问题内容

我有这个代码

import json
from pprint import pprint
json_data=open('bookmarks.json')
jdata = json.load(json_data)
pprint (jdata)
json_data.close()

如何搜索u'uri': u'http:


问题答案:

正如json.loads简单地返回一个字典一样,您可以使用适用于字典的运算符:

>>> jdata = json.load('{"uri": "http:", "foo", "bar"}')
>>> 'uri' in jdata       # Check if 'uri' is in jdata's keys
True
>>> jdata['uri']         # Will return the value belonging to the key 'uri'
u'http:'

编辑:要给出有关如何遍历数据的想法,请考虑以下示例:

>>> import json
>>> jdata = json.loads(open ('bookmarks.json').read())
>>> for c in jdata['children'][0]['children']:
...     print 'Title: {}, URI: {}'.format(c.get('title', 'No title'),
                                          c.get('uri', 'No uri'))
...
Title: Recently Bookmarked, URI: place:folder=BOOKMARKS_MENU(...)
Title: Recent Tags, URI: place:sort=14&type=6&maxResults=10&queryType=1
Title: , URI: No uri
Title: Mozilla Firefox, URI: No uri

检查jdata数据结构将使您可以根据需要进行导航。pprint您已经拥有的电话就是一个很好的起点。

Edit2:另一个尝试。这将获得您在词典列表中提到的文件。这样,我认为您应该能够使其适应您的需求。

>>> def build_structure(data, d=[]):
...     if 'children' in data:
...         for c in data['children']:
...             d.append({'title': c.get('title', 'No title'),
...                                      'uri': c.get('uri', None)})
...             build_structure(c, d)
...     return d
...
>>> pprint.pprint(build_structure(jdata))
[{'title': u'Bookmarks Menu', 'uri': None},
 {'title': u'Recently Bookmarked',
  'uri':   u'place:folder=BOOKMARKS_MENU&folder=UNFILED_BOOKMARKS&(...)'},
 {'title': u'Recent Tags',
  'uri':   u'place:sort=14&type=6&maxResults=10&queryType=1'},
 {'title': u'', 'uri': None},
 {'title': u'Mozilla Firefox', 'uri': None},
 {'title': u'Help and Tutorials',
  'uri':   u'http://www.mozilla.com/en-US/firefox/help/'},
 (...)
}]

然后 “在其中搜索u'uri': u'http:',执行以下操作:

for c in build_structure(jdata):
    if c['uri'].startswith('http:'):
        print 'Started with http'


 类似资料:
  • 我有以下 REST API 响应: 我的查询是 : - 我如何根据查询名称作为库马尔来获得经验。 例如:我需要找到“Kumar”的名字并获得他的empid。(也就是说,按名称搜索并获取他的empid作为响应)我能够获取响应并将其存储在response对象中。但是,如何从响应对象遍历和查询以获得所需的值。 此外,我还尝试检索为: 当我打印响应时,我得到了类似[1234,5678]的empid集合,而

  • 我想在javascript中遍历整个JSON,并找到从特定键开始的值。假设这是我的JSON数据: 我想在javascript中解析完整的JSON,并获得其键以"mohit"开头的值。 请告诉我实现这一目标的简单方法。

  • 问题内容: 我有一个会话变量,其中包含带有值的深层json对象: 例如,我想找到带有“ Piranha the Fish”的行,然后将其删除(并再次对其进行json_encode)。这该怎么做?我想我需要在结果数组中搜索并找到要删除的父键,但是我还是被卡住了。 问题答案: 会将JSON对象转换为由嵌套数组组成的PHP结构。然后,您只需要遍历它们和不需要的一个即可。

  • 本篇将会结合实例解析宽度优先搜索(BFS)。 一、BFS概念 宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。其别名又叫BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到

  • 当你从一个顶点开始,沿着某条路往下走,一直走到底,如果走完后发现不能达到目标解,就回溯,返回到上一个节点,换条路,然后继续走到底,如此往复,直至所有可能的结果都被搜索完。通俗理解就是不撞南墙不回头这种感觉,这个就是我们这篇要讲解的内容,下面带领大家结合实例系统的学习一下。 一、什么是DFS? DFS简单讲叫深度优先搜索,就是指:优先考虑深度,换句话说就是一条路走到黑,直到无路可走的情况下,才会选择

  • A*算法是启发式搜索算法,是根据Dijkstra算法改进而来。 一、定义:是一种在图形平面上,对于有多个节点的路径求出最低通过成本的算法。它属于图遍历和最佳优先搜索算法,亦是BFS 的改进。 二、如何更好的理解A*算法? 如下图所示,S为起始(start)节点,G为目标(goal)节点。 (1)节点之间连线是两点的路径长度,如A到E的路径长度c(A,E) = 9。 (2)节点旁的h值时当前节点到达