2017-09-14 85 views
1

为什么这个语句删除'E''PIPELINE'string.rstrip()被移除多余的字符

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

但这种说法并没有删除'S'

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

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

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

当我tu RN用rstrip成2条独立的语句,它工作正常:

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

你为什么期望''PIPELINES_DEV'.rstrip('_ DEV')'删除'S'? –

+0

传递给'.strip()'或'.rstrip()'的多字符字符串表示要删除的*字符集*(以任意顺序),而不是文字字符串。 – jasonharper

+0

@ZachGates我不希望'PIPELINES_DEV'.rstrip('_ DEV')'删除'S'。在这个问题的时候,我不明白为什么要删除'PIPELINE'中的'E'而不是'PIPELINES'中的'S' –

回答

4

rstrip删除您从字符串提供的任何字符的尾随情况下,你运用它,直到它找到的东西,不匹配。这在its documentation说:

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

使用rstrip('_DEV')它会从字符串中删除_DEV然后所有E S(或'D' S或'V' S或'_' S),因为这些下降的字符集,你已经给出了(并且没有找到其他不属于该组的字符)。

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