Nick Coghlan wrote:
> The example where the new function was used instead of a questionable use
of replace gave me an idea, though: what if the new functions were
"replacestart()" and "replaceend()"?
>
> * uses "start" and "with" for consistency with the existing checks
> * substring based, like the "replace" method
> * can be combined with an extension of "replace()" to also accept a tuple
of old values to match and replace to allow for consistency with checking
for multiple prefixes or suffixes.

FWIW, I don't place as much value on being consistent with "startswith()"
and "endswith()". But with it being substring based, I think the term
"replace" actually makes a lot more sense here compared to "cut". +1


On Sat, Mar 21, 2020 at 9:46 PM Nick Coghlan <ncogh...@gmail.com> wrote:

> On Sat., 21 Mar. 2020, 11:19 am Nathaniel Smith, <n...@pobox.com> wrote:
>
>> On Fri, Mar 20, 2020 at 11:54 AM Dennis Sweeney
>> <sweeney.dennis...@gmail.com> wrote:
>> > This is a proposal to add two new methods, ``cutprefix`` and
>> > ``cutsuffix``, to the APIs of Python's various string objects.
>>
>> The names should use "start" and "end" instead of "prefix" and
>> "suffix", to reduce the jargon factor and for consistency with
>> startswith/endswith.
>>
>
> This would also be more consistent with startswith() & endswith(). (For
> folks querying this: the relevant domain here is "str builtin method
> names", and we already use startswith/endswith there, not
> hasprefix/hassuffix. The most challenging relevant audience for new str
> builtin method *names* is also 10 year olds learning to program in school,
> not adults reading the documentation)
>
> I think the concern about stripstart() & stripend() working with
> substrings, while strip/lstrip/rstrip work with character sets, is valid,
> but I also share the concern about introducing "cut" as yet another verb to
> learn in the already wide string API.
>
> The example where the new function was used instead of a questionable use
> of replace gave me an idea, though: what if the new functions were
> "replacestart()" and "replaceend()"?
>
> * uses "start" and "with" for consistency with the existing checks
> * substring based, like the "replace" method
> * can be combined with an extension of "replace()" to also accept a tuple
> of old values to match and replace to allow for consistency with checking
> for multiple prefixes or suffixes.
>
> We'd expect the most common case to be the empty string, but I think the
> meaning of the following is clear, and consistent with the current practice
> of using replace() to delete text from anywhere within the string:
>
>     s = s.replacestart('context.' , '')
>
> This approach would also very cleanly handle the last example from the PEP:
>
>     s = s.replaceend(('Mixin', 'Tests', 'Test'), '')
>
> The doubled 'e' in 'replaceend' isn't ideal, but if we went this way, I
> think keeping consistency with other str method names would be preferable
> to adding an underscore to the name.
>
> Interestingly, you could also use this to match multiple prefixes or
> suffixes and find out *which one* matched (since the existing methods don't
> report that):
>
>     s2 = s.replaceend(suffixes, '')
>     suffix_len = len(s) - len(s2)
>     suffix = s[-suffix-len:] if suffix_len else None
>
> Cheers,
> Nick.
>
>
>> _______________________________________________
> 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/VQULYFFT4VVXV35RE5ETR5MOZSHLPFTV/
> Code of Conduct: http://python.org/psf/codeofconduct/
>
_______________________________________________
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/KFDWZ3LWUIE6KHYQYU6Z5VL3SXMMMZOM/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to