Python 強大的模式匹配工具—Pampy
在自然語言處理界,模式匹配可以說是最常用的技術。甚至可以說,將NLP技術作為真實生產力的項目都少不了模式匹配。
什么是模式匹配呢?在計算機科學中,往往是檢查給定的序列或字符串中是否有符合某種模式的片段。比如說:“啊,你的AK-47打得真準”,如果我們將 “啊,你的_____打得真準 ” 作為一種模式,則會將AK-47匹配出來。
實現模式匹配往往都是用正則表達式,但是如果你想識別特別復雜的模式,編寫正則表達式就會變得非常非常麻煩。而Pampy這個項目能解決你不少的煩惱。https://github.com/santinic/pampy
下面是一個使用例子:

1.準備
首先需要你的電腦安裝好了Python環(huán)境,并且安裝好了Python開發(fā)工具。
如果你還沒有安裝,可以參考以下文章:
如果僅用Python來處理數據、爬蟲、數據分析或者自動化腳本、機器學習等,建議使用Python基礎環(huán)境+jupyter即可,安裝使用參考Windows/Mac 安裝、使用Python環(huán)境+jupyter notebook
如果想利用Python進行web項目開發(fā)等,建議使用Python基礎環(huán)境+Pycharm,安裝使用參考 :Windows下安裝、使用Pycharm教程,這下全了?和?Mac下玩轉Python-安裝&使用Python/PyCharm?。
請選擇以下任一種方式輸入命令安裝依賴:
1. Windows 環(huán)境 打開 Cmd (開始-運行-CMD)。
2. MacOS 環(huán)境 打開 Terminal (command+空格輸入Terminal)。
3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.
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)]將特定模式前的元素設為集合,后面的元素設為元組:
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('我的天,你長得真像鱈魚'))
# => '你像鱈魚'如果你喜歡今天的Python 教程,請持續(xù)關注Python實用寶典,如果對你有幫助,麻煩在下面點一個贊/在看,有任何問題都可以在下方留言,我們會耐心解答的!
--end--
掃碼即可加我微信
學習交流
老表朋友圈經常有贈書/紅包福利活動
