我有这个代码
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:?
u'uri': u'http:
正如json.loads简单地返回一个字典一样,您可以使用适用于字典的运算符:
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您已经拥有的电话就是一个很好的起点。
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:'”,执行以下操作:
u'uri': u'http:'
for c in build_structure(jdata): if c['uri'].startswith('http:'): print 'Started with http'