Skip to main content
 首页 » 编程设计

python之string.rstrip() 正在删除多余的字符

2025年05月04日21mq0036

为什么这条语句会删除 'PIPELINE' 中的 'E':

In: 'PIPELINE_DEV'.rstrip('_DEV') 
Out: 'PIPELIN' 

但是这个语句并没有删除'S':

In: 'PIPELINES_DEV'.rstrip('_DEV') 
Out: 'PIPELINES' 

此语句删除末尾的所有 E:

In: 'PIPELINEEEEEEEE_DEV'.rstrip('_DEV') 
Out: 'PIPELIN' 

当我将 rstrip 变成 2 个单独的语句时,它工作正常:

In: 'PIPELINE_DEV'.rstrip('DEV').rstrip('_') 
Out: 'PIPELINE' 

请您参考如下方法:

rstrip 从应用它的字符串中删除您提供的字符的任何尾随实例,直到它找到不匹配的内容。这在 its documentation 中说明:

The chars argument is not a suffix; rather, all combinations of its values are stripped

使用 rstrip('_DEV') 它将从字符串中删除 _DEV,然后删除所有 E(或 'D 's 或 'V's 或 '_'s) 因为它们属于您提供的字符集(并且没有其他字符是'已找到该集合中的 t)。

当您使用 .rstrip('DEV').rstrip('_') 时,对 rstrip 的第一次调用会剥离 'DEV' 然后停止,因为 '_' 不在字符集 'DEV' 中。当第二次调用 rstrip 时,'_' 被删除。


请注意,在 Python >= 3.9 中,str.removesuffix是added为了解决这个普遍的误解。使用 removesuffix,您可以提供一个已删除的后缀字符串(如果存在)作为应用它的字符串的后缀。

你的例子:

'PIPELINE_DEV'.removesuffix('_DEV') 

只会删除 '_DEV' 后缀。