奇怪的 Python strip() 行为

Strange Python strip() behavior

我不明白为什么 strip() returns 会像下面那样运行。我想去除 Axyx 的最后一次出现。我通过使用 rstrip('Axyx') 解决了这个问题,但是下面的解释是什么?

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

传递给strip的字符串被视为一串字符,而不是字符串。因此,strip('Axyx') 表示 "strip occurrences of A, x, or y from either end of the string".

如果您真的想去除前缀或后缀,则必须自己编写该逻辑。例如:

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

因为 strip() returns 您提供的字符串的副本,没有您作为输入提供的字符。
例如: “12345”.strip('123') returns: '45'。
因此,strip() 不会删除单词或其他内容,但会删除您作为输入提供的字符串所具有的所有字符,包括要删除的字符串的结尾和开头。