2 回答
TA贡献1906条经验 获得超10个赞
您可以在模式上进行拆分\w+=,因为您知道键不包含非单词字符,并捕获拆分字符。这会给你留下尾随空格和逗号,但这并不难清理:
import re
string = 'streetName=BENEDITO DE PAULA, QD 03 LT 03, state=AM, complement=SJ BANDEIRANTES, number=4, country=BRA'
pairs = re.split(r'(\w+=)', string)[1:]
[a + b.strip(', ') for a, b in zip(pairs[::2], pairs[1::2])]
结果是 :
['streetName=BENEDITO DE PAULA, QD 03 LT 03',
'state=AM',
'complement=SJ BANDEIRANTES',
'number=4',
'country=BRA']
TA贡献1998条经验 获得超6个赞
这里写正则表达式会很困难,因为贪婪匹配会匹配太多逗号,非贪婪匹配会匹配太少逗号。相反,我会通过用逗号分割文本来解决这个问题,然后检查每个子字符串以查看它是否包含等号。
def convert_to_dict(s):
raw_items = s.split(", ")
items = []
for item in raw_items:
if "=" in item:
items.append(item)
elif len(items) > 0:
items[-1] += ", " + item
else:
raise ValueError("Invalid string: dictionary keys cannot contain commas")
result = {}
for item in items:
key, value = item.split("=", maxsplit=1)
result[key] = value
return result
添加回答
举报