如何使用符号组名关于芬德尔()

2024-05-23 20:10:52 发布

您现在位置:Python中文网/ 问答频道 /正文

是否可以使用(?P<toto>...)re.findall()等价的正则表达式中定义的符号组名?在

使用re.match(),返回一个MatchObject,函数.group('toto')可以在其上使用。。。我想做点接近的事。在

下面是一个例子:

import re
my_str = 'toto=1, bip=xyz, toto=15, bip=abu'
print re.findall('toto=(?P<toto>\d+)\,\sbip=(?P<bip>\w+)', my_str)

它返回:

^{pr2}$

我想要这样的东西:

[{'toto':'1', 'bip':'xyz'}, {'toto':'15', 'bip':'abu'}]

有什么简单的方法吗? 我到处都找不到它。。。在


Tags: 函数re定义mymatchgroup符号等价
1条回答
网友
1楼 · 发布于 2024-05-23 20:10:52

你不能用.findall()来做这个。但是,您可以使用^{}和一些列表理解魔法来实现相同的效果:

print [m.groupdict() for m in re.finditer('toto=(?P<toto>\d+)\,\sbip=(?P<bip>\w+)', my_str)]

打印:

^{pr2}$

所以我们循环使用.finditer()生成的每个匹配项,并取其.groupdict()的结果。在

相关问题 更多 >