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,它就像一个符咒。感谢专家的帮助!