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

來源:互聯網
上載者:User
【開胃小菜】

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

方法一:用內建函數

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

方法二:調用string模組中方法

import stringif 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

結果見下頁:

運行結果:

worldworldwor2h3h4aaaadgat134f8sfewewrf

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

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

結果分析:

首先我們查看一下string模組中的strip源碼:

# Strip leading and trailing tabs and spacesdef 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執行步驟:elloworldlloworldoworldoworl worl worwor

具體代碼執行流程:

  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函數的使用情境

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.