繁体   English   中英

创建一个字典,形成一个困难的字符串格式 python

[英]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'}
  1. 使用正则表达式捕获键及其值: (\w+)\s+=\s+"(\w+)"

  2. 使用re.findall获取匹配列表[('host', 's'), ('port', 'd'), ('service_name', 'a'), ('pass', 'b'), ('user', 'c')]

  3. 最后从 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM