为什么此语句会删除'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'
答案 0 :(得分:5)
rstrip
从您应用它的字符串中删除您提供的字符的所有尾随实例,直到找到不匹配的字符串。这在its documentation中说明:
chars参数不是后缀;相反,其值的所有组合都被剥离
使用rstrip('_DEV')
它会从字符串中移除_DEV
,然后移除所有E
s(或'D'
s或'V'
s或'_'
s)因为那些属于您给出的字符集(并且没有找到该集合中没有的其他字符)。
当您使用.rstrip('DEV').rstrip('_')
时,rstrip
第一次拨打'DEV'
,然后停止,因为'_'
不在字符集'DEV'
中。然后在第二次调用'_'
时删除rstrip
。