在自然语言解决界,模式匹配能够说是最罕用的技术。甚至能够说,将NLP技术作为实在生产力的我的项目都少不了模式匹配

什么是模式匹配呢?在计算机科学中,往往是查看给定的序列或字符串中是否有合乎某种模式的片段。比如说:“啊,你的AK-47打得真准”,如果咱们将 “啊,你的 _ 打得真准 ” 作为一种模式,则会将AK-47匹配进去。

实现模式匹配往往都是用正则表达式,然而如果你想辨认特地简单的模式,编写正则表达式就会变得十分十分麻烦。而Pampy这个我的项目能解决你不少的懊恼。

上面是一个应用例子:

1.筹备

开始之前,你要确保Python和pip曾经胜利装置在电脑上。

(可选1) 如果你用Python的目标是数据分析,能够间接装置Anaconda,它内置了Python和pip.

(可选2) 此外,举荐大家用VSCode编辑器,它有许多的长处。

请抉择以下任一种形式输出命令装置依赖

  1. Windows 环境 关上 Cmd (开始-运行-CMD)。
  2. MacOS 环境 关上 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 refrom 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编程学习圈,理解更多编程技术干货!