string.rstrip()被移除多余的字符
问题描述:
为什么这个语句删除'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'
答
rstrip
删除您从字符串提供的任何字符的尾随情况下,你运用它,直到它找到的东西,不匹配。这在its documentation说:
参数chars 是不是一个后缀;相反,其所有值的组合被剥离
使用rstrip('_DEV')
它会从字符串中删除_DEV
然后所有E
S(或'D'
S或'V'
S或'_'
S),因为这些下降的字符集,你已经给出了(并且没有找到其他不属于该组的字符)。
当您使用.rstrip('DEV').rstrip('_')
到rstrip
第一个呼叫剥去'DEV'
然后停止,因为'_'
不在字符集'DEV'
。然后在第二次拨打rstrip
时删除'_'
。
你为什么期望''PIPELINES_DEV'.rstrip('_ DEV')'删除'S'? –
传递给'.strip()'或'.rstrip()'的多字符字符串表示要删除的*字符集*(以任意顺序),而不是文字字符串。 – jasonharper
@ZachGates我不希望'PIPELINES_DEV'.rstrip('_ DEV')'删除'S'。在这个问题的时候,我不明白为什么要删除'PIPELINE'中的'E'而不是'PIPELINES'中的'S' –