Python解析字符串值并加载到字典中

2024-09-29 19:23:33 发布

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

我需要解析一个字符串值并加载到python字典中

输入:

attributes = "LIFETIME=203421,ID=acr44,SCOPE=[open,basic.operation:read,common.operation:write],USER=b611-410e,CLAIMS_"

预期产出:

attributesDictionary = { "LIFETIME" : "203421",
                         "ID" : "acr44",
                         "SCOPE" : "[open,basic.operation:read,common.operation:write]",
                         "USER" : "b611-410e",
                         "CLAIMS_" : None
                         }

attributesDictionary["ID"]
>>> 'acr44'

attributesDictionary["SCOPE"]
>>> '[open,basic.operation:read,common.operation:write]'

我是python编程新手。我们如何才能做到这一点


Tags: 字符串idreadbasiccommonopenoperationwrite
2条回答

使用re.split的一种方法:

import re

d = {}
for k in re.split(",(?![^\[]*\])", attributes):
    key, *val = k.split("=", 1) 
    d[key] = val[0] if val else None
d

输出:

{'CLAIMS_': None,
 'ID': 'acr44',
 'LIFETIME': '203421',
 'SCOPE': '[open,basic.operation:read,common.operation:write]',
 'USER': 'b611-410e'}

不确定,但在这里我观察到一种模式,所有的钥匙都是大写字母。 如果是这样,您可以执行以下操作:

import re

attributes = "LIFETIME=203421,ID=acr44,SCOPE=[open,basic.operation:read,common.operation:write],USER=b611-410e,CLAIMS_"

keys = re.findall("[A-Z]+", attributes)
values = re.findall("[^A-Z=]+,", attributes)
attributesDictionary = dict(zip(keys,values))

这将为您提供以下输出

{'LIFETIME': '203421',
 'ID': 'acr44',
 'SCOPE': '[open,basic.operation:read,common.operation:write]',
 'USER': 'b611-410e',
 'CLAIMS': '_'}

相关问题 更多 >

    热门问题