在看到python中strip的時候產生了疑問
strip() 用於移除字串頭尾指定的字元(預設為空格)
開始測試:
>>> s = 'ncy_123.python'
>>> s.strip('123')
'ncy_123.python'
疑問:明明指定要刪除123,但是為什麼返回值根本沒有變,繼續測試
>>> s.strip('andyandc_3g1t2m')
'.pytho'
>>> s.strip('_3g1t2m') 'ncy_123.python'
兩個測試返貨結果不一樣
這時候發現,字串s在使用strip()的時候,只有在第乙個字元被刪掉之後,再去匹配後邊的字元。
原理應該是這樣:s.strip('andyandc_3g1t2m') 根據strip中的字元開始匹配字串s,第乙個為n,開始查詢strip,有n,此時 s = 'cy_123.python',繼續匹配strip如果有c則刪掉c。此時如果沒有找到c,那麼直接返回字串s = 'cy_123.python'。
對理論進行測試:
>>> s.strip('anyb_3g1t2m')
'cy_123.pytho'
測試成功
結論就是在字串前面(或者後邊)的字元未被刪除之前,就算該字元後邊與strip匹配也不進行刪除,並且strip()中的字元是無序的只要能匹配就可以刪掉,不論前後。
所以
>>> s.strip('anyb_3g1t2m')
'cy_123.pytho'
>>> s.strip('_3g2t2manyb') 'cy_123.pytho'
返回結果是一樣的。
那麼對s.lstrip()和s.rstrip()就好理解了
s.lstrip()是從左邊第一位開始進行匹配,有則刪除,如果第一位未刪除,即使後邊匹配,仍然無效。
eg.
>>> s.lstrip('ycaglkjhg_123')
'ncy_123.python'
>>> s.rstrip('aothpy.321')
'ncy_123.python'
不管從左還是右,只要前邊的字元未匹配刪除成功,後邊保持原樣。
到這時,仍然有個疑問,字串的左右是從字串的0位置和-1位置,那如果正好全部匹配,會不會刪掉整個字串。
eg.
>>> s.lstrip('anbc.y_3t2h1op')
''
答案是會的,只不過是從左或者從右開始。 python中 strip 的使用
恰好這兩天用到這個函式,看到網上的介紹都比較簡略,而且表述也不太對。自己試了試,對它有了更深刻的理解。簡介 strip 函式可以移除字串中指定的字元,像這樣 a n t1339jfsiao n t a.strip 1339jfsiao 可以看到當我們不設定strip的引數的時候,預設下該函式刪除了字...
python中strip的用法
python中strip用於移除字串頭尾指定的字元 預設為空格或換行符 或字串行。注意 該方法只能刪除開頭或是結尾的字元,不能刪除中間部分的字元。如下 a i am a student print a.strip i 去除開始的 i am a student print a.strip i tn 去...
python中的strip 函式
python 字串 python strip 方法用於移除字串頭尾指定的字元 預設為空格 strip 方法語法 str.strip chars 返回移除字串頭尾指定的字元生成的新字串。以下例項展示了strip 函式的使用方法 usr bin pythonstr 0000000this is stri...