2016-02-28 55 views
0

我使用string.strip()在一個非常簡單的字符串操作上出現了一些非常奇怪的結果。我想知道這是否只會影響到我的問題(我的python安裝有問題?)或者它是一個常見的錯誤?使用Python 2.7和3.5的string.strip()中的奇怪的錯誤

的錯誤是非常有線和這裏有雲:

>>> a = './omqbEXPT.pool' 
>>> a.strip('./').strip('.pool') 
'mqbEXPT' #the first 'o' is missing!!! 

它只有一個「O」是繼出現「./」!

>>> a = './xmqbEXPT.pool' 
>>> a.strip('./').strip('.pool') 
'xmqbEXPT' 

這是怎麼回事? 我已經測試了這兩個python 2.7和3.5,結果並沒有改變。

+2

沒有錯誤,請閱讀[文檔](https://docs.python.org/3/library/stdtypes.html#str.strip)。 – vaultah

+0

你是對的..我的壞..我一直使用strip()很長一段時間沒有完全理解它。那是我第一次注意到這種行爲。 –

回答

1

這是如何strip方法實際上設計工作。

chars參數是一個字符串,指定要刪除的字符集。

chars參數不是前綴或後綴;相反,它的值的所有組合被剝離:

所以,當你說my_string.strip('.pools'),它會刪除該組(即{'.', 'p', 'o', 'l', 's'}。)所有的開頭和結尾的字符。

您可能想要使用str.replacere.sub

>>> './omqbEXPT.pool'.replace('./', '').replace('.pool', '') 
'omqbEXPT' 

>>> import re 
>>> re.sub(r'^\.\/|\.pool$', '', './omgbEXPT.pool') 
'omqbEXPT' 
0

string.strip()將左條和右條每個字符。意思是,當你要求它去掉pool時,它會刪除它在字符串的兩端找到的任何p s或o s或l。這就是爲什麼它剝離了o

0

這不是一個錯誤。 strip任何字符串中的字符串作爲參數傳遞給它。因此,首先從字符串a中除去所有前導和尾部的點和斜線,然後字符串'.pool'包含的所有字符。