首頁  >  文章  >  後端開發  >  Python中partition字串函數實例教程

Python中partition字串函數實例教程

零下一度
零下一度原創
2017-05-22 17:08:372542瀏覽

在2.5版中新增加了一個叫partition的函數,它可以做什麼呢?舉個小例子:

>>> 'http://www.donews.net/limodou'.partition('://')
('http', '://', 'www.donews.net/limodou')
>>> 'file:/a.html'.partition('://')
('file:/ a.html', ”, ”)


       從第一個例子可以看出,它用來根據指定的分隔符號將字串進行分割,如果字串包含指定的分隔符,則傳回一個3元的tuple,第一個為分隔符號左邊的子串,第二個為分隔符號本身,第三個為分隔符號右邊的子串。第二個例子說明,如果找不到指定的分隔符,則傳回仍然是一個3元的tuple,第一個為整個字串,第二和第三個為空串。

那麼有人要問,它與split(sep, 1)有什麼差別呢?首先split回傳的可能不是固定長度的回傳值,它回傳的是一個list,如果找到,則回傳一個2元list,如果沒找到,則回傳一個1元的list,如:

>>> ‘a.b.c’.split(‘,’, 1)
['a.b.c']
>>> ‘a.b.c’.split(‘.’, 1)
['a', 'b.c']

同時在找到的情況下,它不會回傳分隔符號。

    在某些情況下partition(sep)和rpartition(sep)(從右向左匹配)與split(sep, 1)和rsplit(sep, 1)的功能是類似的。不過partition其實是為了替換find,index而產生的,並不是為了替換split而產生的。在許多情況下,我們需要先透過find來找到一個位置,再進行分割。而使用partition方便許多。如:

>>> a = ‘http://www.donews.net’
>>> pos = a.find(‘://’)
>>> if pos > -1:
…     print a[:pos], a[pos+1:]
http www.donews.net

而使用partition:

>>> a = ‘http://www.donews.net’
>>> left, sep, right = a.partition(‘://’)
>>> print left, right
http www.donews.net

是不是簡單一些呢。

    同時在2.5版中,startswith和endswith有變化,它的第一個參數可以是一個tuple了。這樣用在判斷幾種狀況的時候非常方便。例如要判斷檔名後綴,原來只支援一個值時,可能要先拆分,再判斷,用不上endswith,如:

>>> a = ‘a.gif’
>>> import os.path
>>> ext = os.path.splitext(a)[1]
>>> if ext in ['.gif', '.png', '.bmp']:
…     print ‘found’
…
found

而現在可以:

>>> a = ‘a.gif’
>>> if a.endswith((‘.gif’, ‘png’, ‘.bmp’)):
…     print ‘found’
…
found

是不是簡單多了。注意,上面的tuple我換成list就是不行,看來是強制的。

許多有趣的東西等著你我來發現。

【相關推薦】

1. 分享一篇Python中字串函數(partition)詳解

2. 分享一個字串函數(partition)的實例程式碼

#3. MySQL之-資料表分區技術PARTITION的程式碼範例淺析

以上是Python中partition字串函數實例教程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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