gpt4 book ai didi

python - 是否有类似 re.findall 但返回字典而不是元组的函数?

转载 作者:太空宇宙 更新时间:2023-11-03 13:22:19 26 4
gpt4 key购买 nike

假设我有这个字符串:

a= "hello world hella warld"

我想用正则表达式匹配所有巧合:

b='(?P<hel>hell[oa])\s*(?P<wrl>w[oa]rld)'

我可以使用 re.findall(b,a) 并得到:

[('hello', 'world'),('hella','warld')]

但我真的很想得到:

[{'hel':'hello','wrl':'world'},{'hel':'hella','wrl':'warld'}]

我的问题是在 Python 中有一些原生的或简单的方法吗?

第二个问题:

我写了一个函数来获取字典:

def findalldict(regex,line):
matches = []
match = 1
c = line
while match != None and len(c)>1:
match =re.search(regex,c)
if match:
matches.append(match.groupdict())
c =c[match.end():]
return matches

但我不确定它是否正确,你们能看到任何错误吗?或者您知道实现此目的的更好方法?

最佳答案

您可以使用 finditer代替 findall 获取 MatchObject 的迭代器小号:

>>> regex = re.compile('(?P<hel>hell[oa])\s*(?P<wrl>w[oa]rld)')
>>> line = "hello world hella warld"
>>> [m.groupdict() for m in regex.finditer(line)]
[{'hel': 'hello', 'wrl': 'world'}, {'hel': 'hella', 'wrl': 'warld'}]

关于python - 是否有类似 re.findall 但返回字典而不是元组的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9848034/

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