← Все вопросы

Как удалить из строки только определённые символы по краям (strip с набором)?

Задан 11 месяцев назад604 просмотров3 ответа
13

Думал, strip('xyz') удаляет подстроку 'xyz' по краям, а оно убирает почему-то отдельные буквы. Как работает аргумент strip и как убрать конкретные символы?

3 ответа

22
✓ Принятый ответ — помог автору

Важно: аргумент strip — это набор символов, а не подстрока. Он срезает с краёв любой из перечисленных символов, в любом порядке:

'xyzhelloyx'.strip('xyz')  # 'hello'
'###Цена:###'.strip('#')   # 'Цена:'
'__a_b__'.strip('_')       # 'a_b'  (внутренние _ не трогает)

Если нужно убрать именно подстроку-префикс/суффикс (а не набор символов), в Python 3.9+ есть removeprefix / removesuffix.

Рустем Берикжан removeprefix спас меня от кучи багов · 11 месяцев назад
Георгий Почапский Вот это про набор, а не подстроку — постоянно путают · 11 месяцев назад
8

Чтобы убрать символы и изнутри строки тоже — strip не годится, нужен replace или re.sub. strip работает только по краям.

5

Это набор символов, не подстрока. Для подстроки — removeprefix/removesuffix (3.9+).

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект