Python中的strip 的理解

2021-09-07 19:29:41 字數 1455 閱讀 7998

在看到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...