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
添加回答
舉報