如何以必须从同一字符串中提取键和值的方式将字符串转换为字典

How can I convert a string to dictionary in a manner where I have to extract key and value from same string

我需要以某种方式将字符串转换为字典

str1 = "00001000-0009efff : a 00100000-656b2fff : b"

输出我需要的是

dict1 = {'a':['00001000','0009efff'], 'b':['00100000','656b2fff']}

注意:str1 可以有更多这样的 cde 范围。

假设每个值只有一个键字母

str1 = str1.replace(" : ", ":").split(" ")
output = {}
for _, s in enumerate(str1):
    output[s[-1]] = s[:-2].split("-")

您可以使用正则表达式来完成:

import re

pattern = r'([\w\-]+) : ([\w\.]+)'
out = {m[1]: m[0].split('-') for m in re.findall(pattern, str1)}

正则表达式的解释:

  • 匹配字母数字字符和破折号的组合 [\w-]+
  • 后跟一个 space、一个冒号和一个 space _:_
  • 后跟一个字符[a-z]

群正在抓取你的相关信息。

此代码通常有效

str1 = "00001000-0009efff : a 00100000-656b2fff : b"
needed_dictionary = dict()
split_string = str1.split()

for i in range(len(split_string)):
if split_string[i] == ":":
    needed_dictionary[split_string[i+1]]= split_string[i-1].split("-")
    
print(needed_dictionary)

但是如果值或键中有“-”或“:”,那么这将失败。