strip() method makes me confused

Frank Millman frank at chagford.com
Sat Nov 7 06:28:40 EST 2020


On 2020-11-07 1:03 PM, Bischoop wrote:
> 
> According to documentation strip method removes heading and trailing
> characters.

Both are explained in the docs -

> 
> Why then:
> 
> txt = ",,,,,rrttggs...,..s,bananas...s.rrr"
> 
> x = txt.strip(",s.grt")
> 
> print(x)
> 
> output: banana

"The chars argument is not a prefix or suffix; rather, all combinations 
of its values are stripped"

As you can see, it has removed every leading or trailing ',', 's', '.', 
'g', 'r', and 't'. It starts at the beginning and removes characters 
until it finds a character that is not in the chars arguments. Then it 
starts at the end and, working backwards, removes characters until it 
finds a character that is not in the chars arguments.

> 
> another example:
> 
> text = "this is text, there should be not commas, but as you see there
> are still"
> y = txt.strip(",")
> print(text)
> 
> output:
> this is text, there should be not commas, but as you see there are still
> 

As you yourself said above, it removes 'leading and trailing 
characters'. In your example, the commas are all embedded in the string. 
They are not leading or trailing, so they are not removed.

Note that in Python 3.9, 2 new string methods have been added -

str.removeprefix(prefix, /)

If the string starts with the prefix string, return 
string[len(prefix):]. Otherwise, return a copy of the original string

str.removesuffix(suffix, /)

If the string ends with the suffix string and that suffix is not empty, 
return string[:-len(suffix)]. Otherwise, return a copy of the original 
string

HTH

Frank Millman


More information about the Python-list mailing list