← Все вопросы
Как удалить из строки только определённые символы по краям (strip с набором)?
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+).
Ваш ответ
Войдите, чтобы ответить на вопрос.