[英]Create a dict form a difficult string format python
鉴于:
str_var = 'host = "s"port = "d"service_name = "a"pass = "b"user = "c"'
需要考虑的规则: '""' 之间将始终是一个没有长度限制的简单字符串,格式将始终如所述,不会出现其他修改。
有没有办法创建一个dict,它的值在'='之前作为键,键值是'='之后的字符串,以第二个'"'结束?
结果示例:
{'host': 's',
'port' = 'd',
'service_name ': 'a',
'user': 'c'}
使用正则表达式捕获键及其值: (\w+)\s+=\s+"(\w+)"
使用re.findall
获取匹配列表[('host', 's'), ('port', 'd'), ('service_name', 'a'), ('pass', 'b'), ('user', 'c')]
最后从 pair 传递给一个dict
,只是用dict(pairs)
import re
value = 'host = "s"port = "d"service_name = "a"pass = "b"user = "c"'
pairs = re.findall('(\w+)\s+=\s+"(\w+)"', value)
result = dict(pairs)
print(result) # {'host': 's', 'port': 'd', 'service_name': 'a', 'pass': 'b', 'user': 'c'}
首先我拆分字符串然后我删除= 然后我通过给出键和值来制作一个带有循环的字典。
str_var = 'host = "s" port = "d" service_name = "a" pass = "b" user = "c"'
list1 = str_var.split(" ")
for i in list1:
if i == '=':
list1.remove(i)
print(list1)
dict1 = {}
for i in range(int(len(list1) / 2)):
dict1[list1[i]] = list1[i+1]
print(dict1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.