Почему метод strip в Python удаляет пробельные символы с начала и конца строки?

Каково объяснение неожиданного результата метода `strip` в данном контексте, где мы используем его с аргументом 'on' и 'to'?
  • 11 января 2024 г. 2:57
Ответы на вопрос 2
Метод `strip` в Python по умолчанию удаляет пробельные символы (пробелы, табуляция, переводы строк и др.) с начала и конца строки. Это поведение предназначено для очистки строки от нежелательного пространства вокруг значащего текста, что часто пригождается при обработке текстовых данных, приходящих с пользовательского ввода, из файлов и т.д.

Вы можете также использовать `strip` с конкретным аргументом. Когда вы передаёте аргумент в метод `strip`, он удаляет все комбинации символов, которые входят в ваш аргумент, с начала и конца строки, до тех пор, пока не встретит символ, не входящий в аргумент.

Давайте рассмотрим примеры с аргументами 'on' и 'to':

```python
s = "notion"
print(s.strip('on'))  # выводит: "ti"
```

Здесь `strip` удаляет все 'o' и 'n' с начала и конца строки. В нашем случае 'notion'.strip('on') будет продолжать удалять 'o' и 'n', пока не встретится символ, не содержащийся в 'on', в данном случае 'ti'.

Важно понимать, что аргумент 'on' не означает конкретную последовательность 'on', а означает любые комбинации и вхождения 'o' и 'n'. Поэтому сначала удаляется 'n', потом 'o' в начале строки, и аналогично 'n', затем 'o' в конце строки.

Для второго примера с 'to':

```python
s = "totally optional"
print(s.strip('to'))  # выводит: "tally op"
```

Здесь `strip` удаляет все комбинации 't' и 'o' с начала и конца строки. Метод будет удалять 'to', 'ot', 'tt', 'oo', и т.д., пока не встретит символы, которые не 't' и не 'o'.

На этом примере удаление будет идти так: 'total' из начала строки и 'onal' из конца, оставляя 'tally op'.

Это может привести к неожиданным результатам, если не понимать, что аргумент в `strip` — это набор символов для удаления, а не подстрока или конкретная последовательность символов.
В документации по этому поводу ясно сказано, что аргумент функции - набор (set) символов, которые будут удалены в конце исходной строки.
Похожие вопросы