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

时间:2017-09-14 15:08:55

标签: python string python-3.x

为什么此语句会删除'E'中的'PIPELINE'

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'

1 个答案:

答案 0 :(得分:5)

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

  

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

使用rstrip('_DEV')它会从字符串中移除_DEV,然后移除所有E s(或'D' s或'V' s或'_' s)因为那些属于您给出的字符集(并且没有找到该集合中没有的其他字符)。

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