首頁  >  文章  >  後端開發  >  Python中你不知道的strip()函數的妙用

Python中你不知道的strip()函數的妙用

Y2J
Y2J原創
2017-05-18 14:19:452626瀏覽

【開胃小菜】

當提到python中strip方法,想必凡接觸過python的同行都知道它主要用來切除空格。有以下兩種方法來實現。

方法一:用內建函數

if name == 'main' :
    str = ' Hello world '
    print '[%s]' %str.strip()

方法二:呼叫string模組中方法

import string
if name == 'main' :
    str = ' Hello world '
    print '[%s]' %string.strip(str)

不知道大家是否知道這兩種呼叫有什麼區別?以下是個人一些看法

Ø  str.strip()是呼叫python的內建函數,string.strip(str)是呼叫string模組中的方法

Ø  string.strip (str)是在string模組定義的。而str.strip()是在builtins模組中定義的

問題一: 如何檢視一個模組中方法是否在內建模組有定義?

用dir(模組名稱)看是否有'builtins'屬性。

例如:查看string模組

print dir(string)

問題二、 如何查看python中所有的內建函數

  print dir(sys.modules[ 'builtin' ])

問題三 、如何檢視內建模組中內建函數定義

 print help(builtins)

以上一些都是大家平常都知道的,接下來就進入本文的主題:

【飯中硬菜】

首先請大家看一下下列程式的執行結果:

if name == 'main' :
    str = 'hello world'
    print str.strip( 'hello' )
    print str.strip( 'hello' ).strip()
    print str.strip( ' heldo ' ).strip()    #sentence 1
    stt = 'h1h1h2h3h4h'
    print stt.strip( 'h1' )                #sentence 2
    s = '123459947855aaaadgat134f8sfewewrf7787789879879'
    print s.strip( '0123456789' )         #sentence 3

結果請見下頁:

執行結果:

world
world
wor
2h3h4
aaaadgat134f8sfewewrf

你答對了嗎? O(∩_∩)O~

如果你都答對了,在此處我奉上32個讚…

結果分析:

首先我們查看string模組中的strip原始碼:

# Strip leading and trailing tabs and spaces
def strip (s, chars= None ):
    """strip(s [,chars]) -> string
    Return a copy of the string swith leading and trailing
    whitespace removed.
    If chars is given and not None,remove characters in chars instead.
    If chars is unicode, S will beconverted to unicode before stripping.
    """
return s.strip(chars)

冒昧的翻譯一下: 這個方法用來去除首尾的空格和tab。傳回一個去掉空格的S字串的拷貝。如果參數chars不為None有值,那就去掉在chars中出現的所有字元。如果chars是unicode,S在操作之前先轉換成unicode.

下面就上面裡子中的sentence1 \2 \3做個說明:

str = 'hello world'
print str.strip( ' heldo ' ).strip()
result:wor
执行步骤:
elloworld
lloworld
oworld
oworl
 worl
 wor
wor

具體程式碼執行流程:

  print str.strip( 'h' )
    print str.strip( 'h' ).strip( 'e' )
    print str.strip( 'h' ).strip( 'e' ).strip( 'l' )
    print str.strip( 'h' ).strip( 'e' ).strip( 'l' ).strip( 'd' )
    print str.strip( 'h' ).strip( 'e' ).strip( 'l' ).strip( 'd' ).strip( 'o' )
    print str.strip( 'h' ).strip( 'e' ).strip( 'l' ).strip( 'd' ).strip( 'o' ).strip( 'l' )
    print str.strip( 'h' ).strip( 'e' ).strip( 'l' ).strip( 'd' ).strip( 'o' ).strip( 'l' ).strip()

不知道你是否看懂其中的奧妙,我是在專案經理陝奮勇幫助下,一起才發現這個規律。

現在稍微總結一下:

s.strip(chars)使用規則:

首先遍歷chars中的首個字符,看看在S中是否處於首尾位置,如果是就去掉。把去掉後的新字串設定為s,繼續循環,從chars中的首個字元開始。如果不在,直接從chars第二個字元開始。一直循環到,s中首尾字元都不在chars中,則循環終止。

關鍵點:看看 chars 中字元是否在 S 中首尾

看完這個方法發現python原始碼開發人員太牛X了,這麼經典演算法都想的出。

【飯後糕點】

這個方法主要應用於依照特定規則移除兩端的製定字元。如果sentence3就是個很好的應用。

例如: 截取字串中兩端數字,或是取得特性字元第一次和最後一次出現之間的字串等等。

【相關推薦】

1. Python免費影片教學

#2. python中strip()鮮為人知的陷阱

3. python基礎入門之教你如何用strip()函數去空格\n\r\t

4. 詳解python中strip()和split()的使用方法

5. 詳解python中strip函數的使用情境

以上是Python中你不知道的strip()函數的妙用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn