在自然语言解决界,模式匹配 能够说是最罕用的技术。甚至能够说,将 NLP 技术作为实在生产力的我的项目都少不了 模式匹配。
什么是模式匹配呢?在计算机科学中,往往是查看给定的序列或字符串中是否有合乎 某种模式 的片段。比如说:“啊,你的 AK-47 打得真准”,如果咱们将“啊,你的 _ 打得真准”作为一种模式,则会将 AK-47 匹配进去。
实现模式匹配往往都是用正则表达式,然而如果你想辨认特地简单的模式,编写正则表达式就会变得十分十分麻烦。而 Pampy 这个我的项目能解决你不少的懊恼。
上面是一个应用例子:
1. 筹备
开始之前,你要确保 Python 和 pip 曾经胜利装置在电脑上。
(可选 1) 如果你用 Python 的目标是数据分析,能够间接装置 Anaconda,它内置了 Python 和 pip.
(可选 2) 此外,举荐大家用 VSCode 编辑器,它有许多的长处。
请抉择以下任一种形式输出命令装置依赖:
- Windows 环境 关上 Cmd (开始 - 运行 -CMD)。
- MacOS 环境 关上 Terminal (command+ 空格输出 Terminal)。
- 如果你用的是 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 教程,欢送关注公众号:Python 编程学习圈,理解更多编程技术干货!