如何以必须从同一字符串中提取键和值的方式将字符串转换为字典
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
可以有更多这样的 c
、d
、e
范围。
假设每个值只有一个键字母
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)
但是如果值或键中有“-”或“:”,那么这将失败。
我需要以某种方式将字符串转换为字典
str1 = "00001000-0009efff : a 00100000-656b2fff : b"
输出我需要的是
dict1 = {'a':['00001000','0009efff'], 'b':['00100000','656b2fff']}
注意:str1
可以有更多这样的 c
、d
、e
范围。
假设每个值只有一个键字母
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)
但是如果值或键中有“-”或“:”,那么这将失败。