我有一个字符串key1(value1) key2(vallue2) key3(value3) key4(value4) key5(value5) k
,并希望将它们提取到字典中,如下所示。我能够分别提取括号内外的值,但不能在python中关联和创建字典。请协助。
result = {
"key1" : "value1",
"key2" : "value2",
"key3" : "value3",
"key4" : "value4",
"key5" : "value5",
}
答案 0 :(得分:1)
import re
s = "key1(value1) key2(vallue2) key3(value3) key4(value4) key5(value5) k"
r = re.findall(r"(\w+)\(([^)]+)", s)
print(dict(zip([x[0] for x in r], [x[1] for x in r])))
结果:
{'key1': 'value1', 'key2': 'vallue2', 'key3': 'value3', 'key4': 'value4', 'key5': 'value5'}
答案 1 :(得分:0)
您的键值对显然是以它们之间的序列') '
分隔的,因此re.split()
是第一步的不错选择,'\)\s\+'
作为模式。并且记得首先修剪尾随'),以免损坏最后一个值。
当你在正则表达式上拆分字符串时,只需遍历结果列表并将每个键值对推入字典中。字符串的split()
方法可用于将列表项拆分为键值对,'('
作为分隔符(而maxsplit 1,因为您不希望更多的开头括号在项目中。
答案 2 :(得分:0)
使用regex
的解决方案:
import re
s = "key1(value1) key2(value2) key3(value3) key4(value4) key5(value5)"
keys = re.findall(r"([A-Za-z0-9_]+)\(", s)
values = re.findall(r"\(([A-Za-z0-9_]+)\)", s)
result = {k: v for k, v in zip(keys, values)}
print(result)
# {'key1': 'value1',
# 'key2': 'value2',
# 'key3': 'value3',
# 'key4': 'value4',
# 'key5': 'value5'}