[Python-ideas] New explicit methods to trim strings

MRAB python at mrabarnett.plus.com
Wed Apr 3 13:50:37 EDT 2019


On 2019-04-03 09:38, Stephen J. Turnbull wrote:
 > MRAB writes:
 >  > On 2019-04-02 19:10, Stephen J. Turnbull wrote:
 >
 >  > >      word[len(prefix) if word.startswith(prefix) else 0:]
 >
 >  > It could be 'improved' more to:
 >  >
 >  >      word[word.startswith(prefix) and len(prefix) : ]
 >
 > Except that it would be asymmetric with suffix.  That probably doesn't
 > matter given the sequence[:-0] bug.
 >
 > BTW thank you for pointing out that bug (and not quoting the code
 > where I deliberately explicitly introduced the null suffix! ;-)  This
 > works:
 >
 >     word[:-len(suffix) or len(word)] if word.endswith(suffix) else word
 >
I would've written it as:

     word[: len(word) - len (suffix)] if word.endswith(suffix) else word

 > Do tutorials mention this pitfall with computed indicies (that -0 is
 > treated as "beginning of sequence")?  (I should check myself, but
 > can't spend time this week and so probably won't. :-( )
 >
 >  > > prefix.  So that's the one I'd go with, as I can't think of any
 >  > > applications where multiple copies of the same string would be 
useful.
 >
 >  > _Neither_ version copies if the word doesn't start with the prefix. If
 >  > you won't believe me, test them! :-)
 >
 > Oh, I believe you.  It just means somebody long ago thought more
 > deeply about the need for copying immutable objects than I ever have.
 >



More information about the Python-ideas mailing list