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

Nic*_*gan 1 python string python-3.x

为什么这个语句会删除'E'in 'PIPELINE':

In: 'PIPELINE_DEV'.rstrip('_DEV')
Out: 'PIPELIN'
Run Code Online (Sandbox Code Playgroud)

但是这个声明没有删除'S':

In: 'PIPELINES_DEV'.rstrip('_DEV')
Out: 'PIPELINES'
Run Code Online (Sandbox Code Playgroud)

该声明最后删除了所有的E:

In: 'PIPELINEEEEEEEE_DEV'.rstrip('_DEV')
Out: 'PIPELIN'
Run Code Online (Sandbox Code Playgroud)

当我将rstrip转换为2个单独的语句时,它可以正常工作:

In: 'PIPELINE_DEV'.rstrip('DEV').rstrip('_')
Out: 'PIPELINE'
Run Code Online (Sandbox Code Playgroud)

Jim*_*ard 5

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

chars参数不是后缀 ; 相反,它的所有值组合都被剥离了

使用rstrip('_DEV')它将_DEV从字符串中删除,然后删除所有Es(或'D's或'V's或'_'s),因为它们属于您给出的字符集(并且没有找到该集合中没有的其他字符).

当你使用.rstrip('DEV').rstrip('_')第一个调用rstrip剥离'DEV'然后停止因为'_'不在字符集中'DEV'.'_'然后在第二次调用时删除rstrip.