I need to convert string to dictionary in a manner for example
str1 = "00001000-0009efff : a 00100000-656b2fff : b"
Output what I require is
dict1 = {'a':['00001000','0009efff'], 'b':['00100000','656b2fff']}
Note: str1
can have many more such c
, d
, e
with range.
CodePudding user response:
You can do it with a regex:
import re
pattern = r'([\w\-] ) : ([a-z])'
out = {m[1]: m[0].split('-') for m in re.findall(pattern, str1)}
Explanation of the regex:
- match combination of alphanumeric characters and dashes
[\w-]
- followed by a space, a colon and a space
_:_
- followed by a character
[a-z]
The groups are catching your relevant infos.
CodePudding user response:
Assuming you only have a single key letter for each value
str1 = str1.replace(" : ", ":").split(" ")
output = {}
for _, s in enumerate(str1):
output[s[-1]] = s[:-2].split("-")
CodePudding user response:
This code will work in general
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)
But in Case the values or keys have "-" or ":" in them then this will fail.