> On Dec 27, 2019, at 09:00, Juancarlo Añez <apal...@gmail.com> 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 -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/S5OE3EZVQNLCTBVHDFXUPZQYVTJP2CS7/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to