On Thu, Dec 5, 2019 at 6:16 PM Juancarlo Añez <apal...@gmail.com> wrote:

> It’s unfortunate that these functions aren’t better matched. Why is there
>> a simple-semantics find-everything and a match-semantics find-iteratively
>> and find-one? But I don’t think adding a simple-semantics find-one that
>> works by inefficiently finding all is the right solution.
>>
>
> The proposed implementation for *findfirst()* is:
>
> *return next(finditer(pattern, text, flags=flags), default=default)*
>
>
Um, finditer() returns a Match object, and IIUC findfirst() should return a
string, or a tuple of groups if there's more than one group. So the actual
implementation would be a bit more involved. Something like this, to match
findall() better:

    for match in re.finditer(pattern, text, flags=flags):
        # Only act on first match
        groups = match.groups()
        if not groups:
            return match.group(0)  # Whole match
        if len(groups) == 1:
            return groups[0]  # One match
        return groups
    # No match, use default
    return default

Alternatively, replace the first line with this:

    match = re.search(pattern, text, flags=flags)
    if match is not None:

(There are apparently subtle differences between re.search() and
re.findall() -- not sure if they matter in this case.)

And if the point of proposing first is that novices will figure out how to
>> write first(findall(…)) so we don’t need to add findfirst, then I think we
>> need findfirst even more, because novices shouldn’t learn that bad idea.
>>
>
Yes, my point exactly.


> I posted another thread to argue in favor of *first()*, independently of
> *findfirst().*
>

Also agreed, I've observed that as a common pattern.

-- 
--Guido van Rossum (python.org/~guido)
*Pronouns: he/him **(why is my pronoun here?)*
<http://feministing.com/2015/02/03/how-using-they-as-a-singular-pronoun-can-change-the-world/>
_______________________________________________
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/RC2IAT2IP55XFYZLZ2ENAXZCXQCHER2F/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to