我有这个字符串:
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'}]
Mi queston是否有一些本地或简单的方法来获得这个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'}]