Python 使用哪种方法从类似json的输出中过滤出数据
我们的一个系统为我提供了如下数据:Python 使用哪种方法从类似json的输出中过滤出数据,python,json,regex,list,Python,Json,Regex,List,我们的一个系统为我提供了如下数据: [ { "count": 1, "headings": [ "name", "Hosts" ], "kind": "ApplicationInstance", "offset": 0, "results": [ [ "demo",
[
{
"count": 1,
"headings": [
"name",
"Hosts"
],
"kind": "ApplicationInstance",
"offset": 0,
"results": [
[
"demo",
[
"hostname2.domain.com",
"hostname3.domain.com",
"hostname4.domain.com",
"hostname1",
"hostname5",
"hostname7"
]
]
]
}
]
此数据是python脚本中cURL命令的结果
现在,我正试图找出获取“Demo”中所有主机(包括它们的域名,如果有的话)的最佳方法
像这样:
hostname2.domain.com
hostname3.domain.com
hostname4.domain.com
hostname1
hostname5
hostnam8
到目前为止,我还不能成功地使用grep或regex,但我相当有信心,我没有以正确的方式使用它
因此,我正在寻求您的指导,以确定解决此问题的最佳方法。你的任何一个指针都会很好。我不太确定你的JSON的可能值是什么,但这里有一个适用于发布的字典的解决方案:
导入请求
主机=[]
resp=requests.get(“URL”)#如果您想从URL获取它
对于resp.json()中的元素:
结果列表=元素[“结果”]
对于\u结果列表中的结果:
如果结果[0]=“演示”:
hosts.extends(结果[1])
打印(主机)
#=>['hostname2.domain.com'、'hostname3.domain.com'、'hostname4.domain.com'、'hostname1'、'hostname5'、'hostname7']
如果您正在为发布的JSON寻找解决方案,那么您应该使用JSON.loads
,而不是使用requests.get
:
导入json
对于json.loads(“json_字符串”)中的元素:
#相同代码
我不太确定JSON的可能值,但这里有一个适用于已发布字典的解决方案:
导入请求
主机=[]
resp=requests.get(“URL”)#如果您想从URL获取它
对于resp.json()中的元素:
结果列表=元素[“结果”]
对于\u结果列表中的结果:
如果结果[0]=“演示”:
hosts.extends(结果[1])
打印(主机)
#=>['hostname2.domain.com'、'hostname3.domain.com'、'hostname4.domain.com'、'hostname1'、'hostname5'、'hostname7']
如果您正在为发布的JSON寻找解决方案,那么您应该使用JSON.loads
,而不是使用requests.get
:
导入json
对于json.loads(“json_字符串”)中的元素:
#相同代码
您可以使用json模块甚至字符串功能
使用json模块:
import json
with open('test.json') as json_f:
data = json.load(json_f)
for p in data:
results = p['results']
results = ((results[0])[1])
for res in results:
print(res)
您可以使用json模块甚至字符串函数 使用json模块:
import json
with open('test.json') as json_f:
data = json.load(json_f)
for p in data:
results = p['results']
results = ((results[0])[1])
for res in results:
print(res)
导入请求;my_json=requests.get(endpoint.json()
。现在您有了一个python列表。不需要正则表达式,JSON是有效的,您只需将其反序列化为嵌套的python结构,即可正常访问;my_json=requests.get(endpoint.json()。现在您有了一个python列表。不需要正则表达式,JSON是有效的,您只需将其反序列化为嵌套的python结构,即可正常访问该结构。@roganjosh在注释之前编辑;)谢谢Adam,它确实给了我一个错误消息:list of_results=res[“results”]TypeError:string索引必须是整数这是因为在我的代码中,我将res
视为字典,而在你的代码中它是字符串。我猜你还没有把你的JSON翻译成字典。你是对的!将JSON翻译成Dict,它就像一个符咒。感谢专家的帮助@roganjosh在您的评论之前编辑;)谢谢Adam,它确实给了我一个错误消息:list of_results=res[“results”]TypeError:string索引必须是整数这是因为在我的代码中,我将res
视为字典,而在你的代码中它是字符串。我猜你还没有把你的JSON翻译成字典。你是对的!将JSON翻译成Dict,它就像一个符咒。感谢专家的帮助!