I always thought strip, lstrip and rstrip would simply match and strip whatever string it was passed to them. However, it turns out that's not how they work.
"Hello world".strip("hel") 
# Expected outcome: 'lo world'
'o world'  # Actual outcome
What strip, lstrip and rstrip actually do is to remove any of the specified characters until a non-matching character is encountered. So in the example above, the second l still matches the provided set of chars and hence gets removed. 
I guess most of the time I just got lucky and never stumbled on the actual behavior. But what I should have used in most of the cases is actually removeprefix and removesuffix, as the docs suggest.
Today I learned.