2015-10-24 1 views
0

Я не понимаю, почему функция strip() возвращает то, как это делается ниже. Я хочу удалить() последнее появление Axyx. Я обошел его, используя rstrip («Axyx»), но что объясняет следующее?Поведение Strange Python strip()

>>>"Abcd Efgh Axyx".strip('Axyx') 
'bcd Efgh ' 

ответ

4

Строка, передаваемая strip рассматривается как набор символов, а не строка. Таким образом, strip('Axyx') означает «появление полос A, x, или y с любого конца строки».

Если вы действительно хотите снять префикс или суффикс, вам придется написать эту логику самостоятельно. Например:

s = 'Abcd Efgh Axyx' 
if s.endswith('Axyx'): 
    s = s[:-len('Axyx')] 
+0

Есть ли компактный способ удалить первое вхождение подстроки справа от строки? – user3079275

+0

Является ли «Axyx», который вы хотите удалить, всегда в самом конце строки, или между ними иногда есть материал между «Axyx» и концом? – user2034412

+0

Из re module Использовать re.sub() –

0

Потому что strip() возвращает копию строки, которую вы предоставили, без символов, которые вы указали в качестве ввода.
Например: "12345" .strip ('123') возвращает: '45'.
Итак, strip() не удаляет слова или что-то подобное, но удаляет все символы, которые строка, которую вы даете в качестве ввода, имеет как от конца, так и от начала строки, которую вы хотите разбить.