2017-09-14 87 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時刪除'_'