首頁  >  文章  >  後端開發  >  這個Python神器,能讓你摸半天魚!

這個Python神器,能讓你摸半天魚!

WBOY
WBOY轉載
2023-04-11 20:07:221104瀏覽

這個Python神器,能讓你摸半天魚!

我敢以我的榮譽保證,用了它之後,你寫程式碼的效率可以蹭蹭地提升!

Pampy 是哪一條路神仙

先普及模式匹配。

模式匹配即給定某種模式,用這種模式去檢查序列或字串是否符合這種模式,這種技術在自然語言處理中經常使用。

Pampy 是 Python 的一個模式匹配類別庫,一個只有150行的類別庫,該庫優雅、高效值得廣大Python的碼農加入自己基本開發堆疊中。

無獨有偶,程式還有一個同名的 Pampy.js 的 JavaScript 版本函式庫。

你如果有興趣,可以閱讀原始碼,將其照搬到更多的開發語言中。

安裝這個函式庫的方式也是老生常談了:

  •  pip install pampy

Pampy 的花式秀

匹配單一字元

我們可以用_ 來匹配單一字元:

from pampy import _,match
a=['a',1,'b',2,'c',3,'d',4]
patter = ['a',1,'b',_,'c',3,'d',4]
action=lambda x: f'b is: {x}'
print(match(a,patter,action))

運行結果是:

  •  b is: 2

從上面例子可以看出,實際上我們只是用_ 充當一個佔位符,當匹配的時候,找到這個佔位符對應的元素即可。

符合字典

我們可以符合多層級的字典中的任一層級的key 或value:

from pampy import _, match
person = {
 'address': {'province': '湖北', 'city': '武汉', 'district': '东湖高新'},
 'name': '闲欢'
}
patter = {_: {_: '武汉'}}
action = lambda k1, k2: ({'k1': k1, 'k2': k2})
print(match(person, patter, action))

運行結果是:

  •  {'k1': 'address', 'k2': 'city'}

跟前一個範例類似,這裡使用_ 這個佔位符佔位,然後在action 裡面定位佔位符,即可輸出結果。

匹配開頭和結尾

上面的例子,我們都是使用佔位符來佔位,但是佔位符只能匹配一個字符,下面的例子,我們將用HEAD 和TAIL 這兩個關鍵字來匹配開頭和結尾,他們可以批評任意多個字元:

from pampy import _,match,HEAD,TAIL
a=['a',1,'b',2,'c',3,'d',4]
patter = [HEAD,_,'b',2,'c',3,TAIL]
action=lambda h,m,t: ({'head':h,'middle':m,'tail':t})
print(match(a,patter,action))

運行上面例子,結果是:

  •  {'head': 'a', 'middle': 1, 'tail': ['d', 4]}

我們可以從結果看到,HEAD 匹配了一個字符,TAIL 匹配了兩個字符,輸出的時候,如果是多個字符,結果會以數組的方式給出。

總結

Pampy 的例子都很簡單,大家一閱便知。透過看著幾個例子,是不是有種感覺:哇,還有這等神器!

當然,Pampy 的模式匹配不只這麼多種方式,還有更多方式有待大家去探索。

以上是這個Python神器,能讓你摸半天魚!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除