Python解析字符串值并加载到字典中
我需要解析一个字符串值并加载到python字典中 输入:Python解析字符串值并加载到字典中,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,我需要解析一个字符串值并加载到python字典中 输入: attributes = "LIFETIME=203421,ID=acr44,SCOPE=[open,basic.operation:read,common.operation:write],USER=b611-410e,CLAIMS_" 预期产出: attributesDictionary = { "LIFETIME" : "203421",
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编程新手。我们怎样才能做到这一点呢?不确定,但在这里我观察到一种模式,所有的键都是大写字母。 如果是这样,您可以执行以下操作:
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': '_'}
不确定,但在这里我观察到一种模式,所有的钥匙都是大写字母。 如果是这样,您可以执行以下操作:
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': '_'}
使用re.split的一种方法:
输出:
{'CLAIMS_': None,
'ID': 'acr44',
'LIFETIME': '203421',
'SCOPE': '[open,basic.operation:read,common.operation:write]',
'USER': 'b611-410e'}
使用re.split的一种方法:
输出:
{'CLAIMS_': None,
'ID': 'acr44',
'LIFETIME': '203421',
'SCOPE': '[open,basic.operation:read,common.operation:write]',
'USER': 'b611-410e'}
到目前为止,您尝试了什么?尝试使用python正则表达式识别由“=”分隔的键值对。但它并不适用于所有场景。请展示您尝试的确切代码,以及一个不起作用的示例场景?如果您创建源代码行,请将其保存到json,然后从json读取。@Evg我没有创建源代码行,它是来自网关的字符串值。到目前为止您尝试了什么?尝试使用python正则表达式来标识由“=”分隔的键值对。但它并不适用于所有场景。请显示您尝试的确切代码,以及一个不起作用的示例场景?如果您创建源代码行,请将其保存到json,然后从json读取。@Evg我不是在创建源代码行,它是来自网关的字符串值。您能解释一下这个正则表达式吗?![^[]*]@RaAm。它正在寻找,分裂,但如果不是,即负前瞻?!它在一个以[,和任何*开头的部分中,直到]。你能给我解释一下这个正则表达式吗?![^[]*]@RaAm。它正在寻找,分裂,但如果不是,即负前瞻?!它位于以[,以及任何*开头的部分中,直到]。