gpt4 book ai didi

python - 使用 python 正则表达式查找以逗号分隔的键=值对,但将引号部分保留在一起

转载 作者:行者123 更新时间:2023-12-01 04:18:03 24 4
gpt4 key购买 nike

如何从以下字符串中获取键值对:

s='pairs=<A=name,B=2,C="Last, First">'

括号<...>内的部分包含K=V对,各对之间以逗号分隔。值部分可以在引号中包含逗号。

我笨重的解决方案是获取括号之间的部分,找到不在引号中的逗号位置,按找到的逗号位置进行子串,然后用“=”分割键/值,然后将整个内容转换为字典。

正则表达式应该能够以非常简单的方式做到这一点,对吧?

我到目前为止:

re.findall('([A-Z]+[0-9]*)=([^,]*)', s)

但结果并不正确:

[('A', 'name'), ('B', '2'), ('C', '"Last')]

如何忽略引号中的逗号?

编辑

我犯了一个错误。如果 key 可以有小写字母,我原来的正则表达式模式应该不起作用。

我考虑到了这一点,并结合了 eph 和 vks 的解决方案:

s='Pairs=<Aa=name,Bb=2,Cc="Last, First">'
re.findall('([A-Za-z]+[0-9]*)=("[^"]*"|[^,]*)', re.findall(r"<([^>]*)>",s)[0])

而且它似乎有效。

此解决方案有何改进?

最佳答案

re.findall('([A-Z]+[0-9]*)=("[^"]*"|[^,]*)', s)

关于python - 使用 python 正则表达式查找以逗号分隔的键=值对,但将引号部分保留在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34081567/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com