Mic*_*due 7 json for-loop python-3.x
我正在使用Python; 我需要遍历JSON对象并检索嵌套值.我的数据片段如下:
"bills": [
{
"url": "http:\/\/maplight.org\/us-congress\/bill\/110-hr-195\/233677",
"jurisdiction": "us",
"session": "110",
"prefix": "H",
"number": "195",
"measure": "H.R. 195 (110\u003csup\u003eth\u003c\/sup\u003e)",
"topic": "Seniors' Health Care Freedom Act of 2007",
"last_update": "2011-08-29T20:47:44Z",
"organizations": [
{
"organization_id": "22973",
"name": "National Health Federation",
"disposition": "support",
"citation": "The National Health Federation (n.d.). \u003ca href=\"http:\/\/www.thenhf.com\/government_affairs_federal.html\"\u003e\u003ccite\u003e Federal Legislation on Consumer Health\u003c\/cite\u003e\u003c\/a\u003e. Retrieved August 6, 2008, from The National Health Federation.",
"catcode": "J3000"
},
{
"organization_id": "27059",
"name": "A Christian Perspective on Health Issues",
"disposition": "support",
"citation": "A Christian Perspective on Health Issues (n.d.). \u003ca href=\"http:\/\/www.acpohi.ws\/page1.html\"\u003e\u003ccite\u003ePart E - Conclusion\u003c\/cite\u003e\u003c\/a\u003e. Retrieved August 6, 2008, from .",
"catcode": "X7000"
},
{
"organization_id": "27351",
"name": "Natural Health Roundtable",
"disposition": "support",
"citation": "Natural Health Roundtable (n.d.). \u003ca href=\"http:\/\/naturalhealthroundtable.com\/reform_agenda\"\u003e\u003ccite\u003eNatural Health Roundtable SUPPORTS the following bills\u003c\/cite\u003e\u003c\/a\u003e. Retrieved August 6, 2008, from Natural Health Roundtable.",
"catcode": "J3000"
}
]
},
Run Code Online (Sandbox Code Playgroud)
我需要在"账单"中查看每个对象并获得"会话","前缀"等,我还需要浏览每个"组织"并获取"名称","处置"等.我有以下代码:
import csv
import json
path = 'E:/Thesis/thesis_get_data'
with open (path + "/" + 'maplightdata110congress.json',"r") as f:
data = json.load(f)
a = data['bills']
b = data['bills'][0]["prefix"]
c = data['bills'][0]["number"]
h = data['bills'][0]['organizations'][0]
e = data['bills'][0]['organizations'][0]['name']
f = data['bills'][0]['organizations'][0]['catcode']
g = data['bills'][0]['organizations'][0]['catcode']
for i in a:
for index in e:
print ('name')
Run Code Online (Sandbox Code Playgroud)
它会多次返回字符串'name'.
建议?
Joi*_*ish 15
这可能对你有帮助。
def func1(data):
for key,value in data.items():
print (str(key)+'->'+str(value))
if type(value) == type(dict()):
func1(value)
elif type(value) == type(list()):
for val in value:
if type(val) == type(str()):
pass
elif type(val) == type(list()):
pass
else:
func1(val)
func1(data)
Run Code Online (Sandbox Code Playgroud)
您所要做的就是将 JSON 对象作为字典传递给函数。
还有这个 python 库可以帮助你解决这个问题。你可以在这里找到这个 -> JsonJ
和平兄弟!!!
def func1(data):
for key,value in data.items():
print (str(key)+'->'+str(value))
if isinstance(value, dict):
func1(value)
elif isinstance(value, list):
for val in value:
if isinstance(val, str):
pass
elif isinstance(val, list):
pass
else:
func1(val)
func1(data)
Run Code Online (Sandbox Code Playgroud)
与此处实现相同
我在另一个论坛上找到了解决方案,并希望与大家分享,以防有人再次出现.
import csv
import json
path = 'E:/Thesis/thesis_get_data'
with open (path + "/" + 'maplightdata110congress.json',"r") as f:
data = json.load(f)
for bill in data['bills']:
for organization in bill['organizations']:
print (organization.get('name'))`
Run Code Online (Sandbox Code Playgroud)
这个问题是双重嵌套的,所以两个for loops是有意义的。
以下是 Pluralsight 使用其 GraphGL 的摘录,其中包含一个深入三个级别以获取进度、用户或课程信息的示例:
{
"data": {
"courseProgress": {
"nodes": [
{
"user": {
"id": "1",
"email": "a@a.com",
"startedOn": "2019-07-26T05:00:50.523Z"
},
"course": {
"id": "22",
"title": "Building Machine Learning Models in Python with scikit-learn"
},
"percentComplete": 34.0248,
"lastViewedClipOn": "2019-07-26T05:26:54.404Z"
}
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
解析此 JSON 的代码:
for item in items["data"]["courseProgress"]["nodes"]:
print(item["user"].get('email'))
print(item["course"].get('title'))
print(item.get('percentComplete'))
print(item.get('lastViewedClipOn'))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17871 次 |
| 最近记录: |