在自然語言處理界,模式匹配可以說是最常用的技術(shù)。甚至可以說,將NLP技術(shù)作為真實生產(chǎn)力的項目都少不了模式匹配。
什么是模式匹配呢?在計算機科學(xué)中,往往是檢查給定的序列或字符串中是否有符合某種模式的片段。比如說:“啊,你的AK-47打得真準”,如果我們將 “啊,你的_____打得真準 ” 作為一種模式,則會將AK-47匹配出來。
實現(xiàn)模式匹配往往都是用正則表達式,但是如果你想識別特別復(fù)雜的模式,編寫正則表達式就會變得非常非常麻煩。而Pampy這個項目能解決你不少的煩惱。https://github.com/santinic/pampy
下面是一個使用例子:
from pampy import match, _
input = [1, 2, 3]
pattern = [1, 2, _]
action = lambda x: "it's {}".format(x)
match(input, pattern, action)
1.準備
開始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上。
如果你用Python的目的是數(shù)據(jù)分析,可以直接安裝Anaconda, 它內(nèi)置了Python和pip.
請選擇以下任一種方式輸入命令安裝依賴:
1. Windows 環(huán)境 打開 Cmd (開始-運行-CMD)。
2. MacOS 環(huán)境 打開 Terminal (command+空格輸入Terminal)。
3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.
pip installpampy
看到 Successfully installed pampy-0.3.0 則說明安裝成功。
2.使用
HEAD和TAIL能代表某個模式的前面部分或后面部分。
比如將特定模式后的元素都變成元組:
frompampy importmatch, HEAD, TAIL, _
x = [-1, -2, -3, 0, 1, 2, 3]
print(match(x, [-1, TAIL], lambdat: [-1, tuple(t)]))
# => [-1, (-2, -3, 0, 1, 2, 3)]
將特定模式前的元素設(shè)為集合,后面的元素設(shè)為元組:
frompampy importmatch, HEAD, TAIL, _
x = [-1, -2, -3, 0, 1, 2, 3]
print(match(x, [HEAD, _, _, 0, TAIL], lambdah, a, b, t: (set([h, a, b]), tuple(t))))
# => ({-3, -1, -2}, (1, 2, 3))
特性2:甚至能匹配字典中的鍵
在你不知道哪個鍵下有某個值的時候,這招非常好用:
frompampy importmatch, HEAD, TAIL, _
my_dict = {
'global_setting': [1, 3, 3],
'user_setting': {
'face': ['beautiful', 'ugly'],
'mind': ['smart', 'stupid']
}
}
result = match(my_dict, { _: {'face': _}}, lambdakey, son_value: (key, son_value))
print(result)
# => ('user_setting', ['beautiful', 'ugly'])
特性3: 搭配正則
不僅如此,它還能搭配正則一起使用哦:
importrefrompampy importmatch, HEAD, TAIL, _
defwhat_is(pet):
returnmatch(
pet, re.compile('(\w+),(\w)\w+鱈魚$'), lambdamygod, you: you + "像鱈魚"
)
print(what_is('我的天,你長得真像鱈魚'))
# => '你像鱈魚'
-
python
+關(guān)注
關(guān)注
56文章
4823瀏覽量
86157
發(fā)布評論請先 登錄
python入門圣經(jīng)-高清電子書(建議下載)
?如何在虛擬環(huán)境中使用 Python,提升你的開發(fā)體驗~

OSS Nokalva:適用于Python的OSS NAS工具

SPC200強大的音頻工具

Python編程:處理網(wǎng)絡(luò)請求的代理技術(shù)
手寫圖像模板匹配算法在OpenCV中的實現(xiàn)

P2link——強大的內(nèi)網(wǎng)穿透和遠程訪問工具
第二屆大會回顧第25期 | OpenHarmony上的Python設(shè)備應(yīng)用開發(fā)

使用Python進行Ping測試

評論