Что определяет, будет ли работать str.strip()?

Этот пример можно найти на странице документов Python для str.strip().

>>> 'www.example.com'.strip('cmowz.')
'example'

Это работает хорошо и прекрасно; но почему эти двое ничего не делают?

>>> 'www.example.com'.strip('.')
'www.example.com'   

>>> 'www.example.com'.strip('co')
'www.example.com'

person cdhagmann    schedule 26.02.2014    source источник
comment
Вы знаете, что делает полоса? Непосредственно из опубликованной вами документации: верните копию строки с удаленными начальными и конечными символами. Это . и соведущие или замыкающие, то есть в начале или в конце?   -  person epascarello    schedule 26.02.2014
comment
Прочитайте документы еще раз. :) Возвращает копию строки с удаленными начальными и конечными символами.   -  person Ashwini Chaudhary    schedule 26.02.2014
comment
Спасибо, было бы неплохо, если бы в строке примера были некоторые из этих букв внутри, чтобы мы могли видеть, что они не затронуты.   -  person cdhagmann    schedule 26.02.2014
comment
@cdhagmann у него было "м"   -  person Shamik    schedule 04.03.2014


Ответы (1)


str.strip() удаляет с концов, поэтому удаляются только начальные и конечные символы.

Ни в одном из примеров нет ., c или o на обоих концах.

В примере в документации текст начинается с w, который находится в наборе удаляемых символов. После удаления www следующий символ . также находится в наборе удаляемых символов. e нет, и на этом зачистка останавливается. В конце примера текста сначала нужно удалить m, затем o, затем c и, наконец, ..

Чтобы удалить определенные символы из строки, используйте str.replace() (для отдельных символов), регулярное выражение (для набора) или используйте str.translate():

>>> 'www.example.com'.replace('.', '')
'wwwexamplecom'
>>> 'www.example.com'.translate(None, 'co')
'www.example.m'
>>> import re
>>> re.sub(r'[co]', '', 'www.example.com')
'www.example.m'
person Martijn Pieters    schedule 26.02.2014
comment
Так что же тогда удаляет символы из строки? - person cdhagmann; 26.02.2014