On Sun, 22 Mar 2020 at 14:01, Dennis Sweeney
<sweeney.dennis...@gmail.com> wrote:
>
> Is there a proven use case for anything other than the empty string as the 
> replacement? I prefer your "replacewhatever" to another "stripwhatever" name, 
> and I think it's clear and nicely fits the behavior you proposed. But should 
> we allow a naming convenience to dictate that the behavior should be 
> generalized to a use case we're not sure exists, where the same same argument 
> is passed 99% of the time?

I think so, as if we don't, then we'd end up with the following three
methods on str objects (using Guido's suggested names of
"removeprefix" and "removesuffix", as I genuinely like those):

* replace()
* removeprefix()
* removesuffix()

And the following questions still end up with relatively non-obvious answers:

Q: How do I do a replace, but only at the start or end of the string?
A: Use "new_prefix + s.removeprefix(old_prefix)" or
"s.removesuffix(old_suffix) + new_suffix"

Q: How do I remove a substring from anywhere in a string, rather than
just from the start or end?
A: Use "s.replace(substr, '')"

Most of that objection would go away if the PEP added a plain old
"remove()" method in addition to removeprefix() and removesuffix(),
though - the "replace the substring with an empty string" trick isn't
the most obvious spelling in the world, whereas I'd expect a lot folks
to reach for "s.remove(substr)" based on the regular sequence API, and
I think Guido's right that in many cases where a prefix or suffix is
being changed, you also want to add it if the old prefix/suffix is
missing (and in the cases where you don't then, then you can either
use startswith()/endswith() first, or else check for a length change.

> I think a downside would be that a pass-a-string-or-a-tuple-of-strings 
> interface would be more mental effort to keep track of than a ``*args`` 
> variadic interface for "(cut/remove/without/trim)prefix", even if the former 
> is how ``startswith()`` works.

I doubt we'd use *args for any new string methods, precisely because
we don't use it for any of the existing ones.

Cheers,
Nick.

-- 
Nick Coghlan   |   ncogh...@gmail.com   |   Brisbane, Australia
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/ULNZVYYZBX6RHEAVWGO4AIDOQSNSCURJ/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to