Python 超級強(qiáng)大的模式匹配工具—Pampy
點擊上方“AirPython”,選擇“加為星標(biāo)”

大家好,我是安果!
在自然語言處理界,「模式匹配」可以說是最常用的技術(shù);甚至可以說,將 NLP 技術(shù)作為真實生產(chǎn)力的項目都少不了模式匹配
什么是模式匹配呢?
在計算機(jī)科學(xué)中,往往是檢查給定的序列或字符串中是否有符合某種模式的片段,比如說:“啊,你的 AK-47 打得真準(zhǔn)”,如果我們將 “啊,你的_打得真準(zhǔn) ” 作為一種模式,則會將 AK-47 匹配出來
實現(xiàn)模式匹配往往都是用正則表達(dá)式,但是如果你想識別特別復(fù)雜的模式,編寫正則表達(dá)式就會變得非常非常麻煩
而 Pampy 這個項目能解決你不少的煩惱
項目地址:
https://github.com/santinic/pampy
下面是一個使用例子:

1. 安裝
趕緊讓我們來試一下,安裝 Pampy 前,你要確保 Python 和 pip 已經(jīng)成功安裝在電腦上噢
使用命令安裝 Pampy
$ pip install pampy
看到 Successfully installed pampy-0.3.0 則說明安裝成功
2. 使用
特性1:HEAD 和 TAIL
HEAD 和 TAIL 能代表某個模式的前面部分或后面部分。
比如:將特定模式后的元素都變成元組:
from pampy import match, HEAD, TAIL, _
x = [-1, -2, -3, 0, 1, 2, 3]
print(match(x, [-1, TAIL], lambda t: [-1, tuple(t)]))
# => [-1, (-2, -3, 0, 1, 2, 3)]
將特定模式前的元素設(shè)為集合,后面的元素設(shè)為元組:
from pampy import match, HEAD, TAIL, _
x = [-1, -2, -3, 0, 1, 2, 3]
print(match(x, [HEAD, _, _, 0, TAIL], lambda h, a, b, t: (set([h, a, b]), tuple(t))))
# => ({-3, -1, -2}, (1, 2, 3))
特性2:甚至能匹配字典中的鍵
在你不知道哪個鍵下有某個值的時候,這招非常好用:
from pampy import match, HEAD, TAIL, _
my_dict = {
'global_setting': [1, 3, 3],
'user_setting': {
'face': ['beautiful', 'ugly'],
'mind': ['smart', 'stupid']
}
}
result = match(my_dict, { _: {'face': _}}, lambda key, son_value: (key, son_value))
print(result)
# => ('user_setting', ['beautiful', 'ugly'])
特性3: 搭配正則
不僅如此,它還能搭配正則一起使用哦:
import re
from pampy import match, HEAD, TAIL, _
def what_is(pet):
return match(
pet, re.compile('(\w+),(\w)\w+鱈魚$'), lambda mygod, you: you + "像鱈魚"
)
print(what_is('我的天,你長得真像鱈魚'))
# => '你像鱈魚'
好了,以上就是今天的文章。如果對你有幫助,麻煩在下面點一個贊/在看,有任何問題都可以在下方留言,我會耐心解答的!

評論
圖片
表情
