如何使用自定义字段生成JSON

2024-09-29 22:22:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我不太确定这是否可能,因为我无法找到任何关于它的确切信息。我将尽力在下面解释我想做什么

因此,我使用请求库从API中提取信息。一旦有了这些数据,我就使用正则表达式从json输出中查找特定信息段的所有匹配项

我的密码是:

for i in data['resources']:
        if 'id' in i and 'name' in i:
            b = i['name'], i['id']
            k = str(b)
            if  re.findall("'Server-Ownership-\w+', \w+", k):
                matchedOwners = re.findall("'Server-Ownership-\w+', \w+", k)[0]
                j = str(matchedOwners)
                print(j)

此代码的输出为我提供:

'Server-Ownership-A', 100
'Server-Ownership-B', 200
'Server-Ownership-C', 300
'Server-Ownership-D', 400
'Server-Ownership-E', 500
'Server-Ownership-F', 600
'Server-Ownership-G', 700
'Server-Ownership-H', 800

我想做的是以某种方式将每个服务器所有权行引用为自己的,这样我就可以使用与之相关联的末尾的ID为每个服务器执行get请求。我的问题是,我无法确定调用这些数据的方法。我想也许我可以把它转换成json,为“服务器所有权”部分创建一个“名称”字段,然后在最后为id创建一个“id”字段。这是可能的还是有更好的方法

非常感谢您的帮助


Tags: 数据nameinre服务器信息idjson
3条回答

您可以将它们保存为字典,并通过调用键来获取值

server_owners_dict = {'Server-Ownership-A': 100,
'Server-Ownership-B': 200,
'Server-Ownership-C': 300,
'Server-Ownership-D': 400,
'Server-Ownership-E': 500,
'Server-Ownership-F': 600,
'Server-Ownership-G': 700,
'Server-Ownership-H': 800}


print(server_owners_dict['Server-Ownership-E'])
500

将打印更改为函数并返回要在请求中使用的id

如果你不想改变到目前为止你写的东西。我对其进行了修改,以便为服务器所有者提供字典。按照您的要求,matchedOwners中的所有内容都将添加到字典中

server_owners_dict=dict()

for i in data['resources']:
    if 'id' in i and 'name' in i:
        b = i['name'], i['id']
        k = str(b)
        if  re.findall("'Server-Ownership-\w+', \w+", k):
            matchedOwners = re.findall("'Server-Ownership-\w+', \w+", k)[0]
            j = str(matchedOwners).strip().split() # get rid of whitespace and split by comma
            server_owners_dict[j[0].replace('Server-Ownership-','')]=j[1]

您不需要将值放入字符串中,然后使用正则表达式。直接测试i['name']并将其用作字典键

server_owners = {}
for i in data['resources']:
    if 'id' in i and 'name' in i and i['name'].startswith('Server-Ownership-'):
        server_name = i['name'].split('-')[-1] # get A from Server-Ownership-A
        server_owners[server_name] = i['id']

这将创建一个类似dict的

{'A': 100, 'B': 200, 'C': 300, ...}

相关问题 更多 >

    热门问题