> On Dec 27, 2019, at 09:00, Juancarlo Añez <[email protected]> wrote:
>
> for m in re.finditer(pattern, string, flags=flags):
> g = m.groups()
> if len(g) == 1:
> yield g[0]
> elif g:
> yield g
> else:
> yield m.group()
I don’t think this does the same thing as findall in every case. For example,
for capture groups that don’t participate in the match, you’ll get tuples like
('spam', None, '42'), when I’m pretty sure findall always has strings no matter
what. I’m not sure exactly what the rule is for how it does that: maybe it’s
just the same thing as m.groups(default='') would give you?
At any rate, it seems like this isn’t as trivial to port from C as it looked,
so this needs solid unit tests. (Maybe the ones for findall are already good
enough if you just adapt them?)
That’s also a great argument that it should be added to the re module, so
people don’t have to try to figure out how to port C code to Python and then
test the hell out of it just to get something that’s only missing in the first
place for historical/naming reasons.
_______________________________________________
Python-ideas mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at
https://mail.python.org/archives/list/[email protected]/message/S5OE3EZVQNLCTBVHDFXUPZQYVTJP2CS7/
Code of Conduct: http://python.org/psf/codeofconduct/