返回顶部
首页 > 资讯 > 后端开发 > Python >pampy超强的模式匹配工具的实现
  • 829
分享到

pampy超强的模式匹配工具的实现

2024-04-02 19:04:59 829人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录何为模式匹配下载pampy栗子单个字符匹配匹配开头和结尾匹配字典的key使用特性1: HEAD 和 TaiL特性2:甚至能匹配字典中的键特性3: 搭配正则何为模式匹配 模式匹配

何为模式匹配

模式匹配即给定某种模式,用这种模式去检查序列或字符串是否符合这种模式,这种技术在自然语言处理中经常使用。

下载pampy


pip install pampy

栗子

单个字符匹配

以下代码可以完成单个字符在对象中的匹配,使用_表示匹配结果。


from pampy import _,match

a=['a',1,'b',2,'c',3,'d',4]

patter = ['a',1,'b',2,'c',3,'d',_]

action=lambda x: f'result is: {x}'

print(match(a,patter,action))

执行结果:

>>> python test.py
>>> result is: 4

匹配开头和结尾

对于开头或者结尾连续的对象,我们可以使用这种方式实现快速匹配。


from pampy import _,match,HEAD,TAIL

a=['a',1,'b',2,'c',3,'d',4]

patter = [HEAD,_,'b',2,'c',3,TAIL]

action=lambda h,b,t: ({'head':h,'body':b,'tail':t})

print(match(a,patter,action))

执行结果:

>>> Python test.py
>>> {'head': 'a', 'body': 1, 'tail': ['d', 4]}

以上,我们使用HEAD匹配了开头的若干字符,中间使用_匹配了某个数字,结尾我们使用TAIL配了若干字符。

匹配字典的key

当我们只知道某个字典的部分内容,却想要得到某个value的key时,用这种方式事半功倍。


from pampy import _,match,HEAD,TAIL

my_dic={
    'phone':{'huawei':'ok','iphone':'Good','chuizi':'bad'},
    'language':{
        'chinese':['xian','beijing'],
        'english':['usa','canada']
    }
}
patter = {_:{_:'ok'}}

action=lambda a,b: {'key1':a,'key2':b}

print(match(my_dic,patter,action))

运行结果:

>>> python test.py
>>> {'key1': 'phone', 'key2': 'huawei'}

如上,我们已经匹配到了字典的第一层和第二层的Key值。

如上面的例子,我们的模式一定要保持字典结构的完整。

使用

特性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('我的天,你长得真像鳕鱼'))     # => '你像鳕鱼' 

到此这篇关于pampy超强的模式匹配工具的实现的文章就介绍到这了,更多相关pampy 模式匹配工具内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: pampy超强的模式匹配工具的实现

本文链接: https://lsjlt.com/news/130016.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • pampy超强的模式匹配工具的实现
    目录何为模式匹配下载pampy栗子单个字符匹配匹配开头和结尾匹配字典的key使用特性1: HEAD 和 TAIL特性2:甚至能匹配字典中的键特性3: 搭配正则何为模式匹配 模式匹配...
    99+
    2024-04-02
  • pampy超强的模式匹配工具怎么用
    小编给大家分享一下pampy超强的模式匹配工具怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!何为模式匹配模式匹配即给定某种模式,用这种模式去检查序列或字符串...
    99+
    2023-06-20
  • Python神器之Pampy模式匹配库的用法详解
    目录Pampy 是哪路神仙Pampy 的花式秀匹配单个字符匹配字典匹配开头和结尾总结大家好,我是闲欢,一个很卷的程序员! 今天给大家分享一个炒鸡炒鸡简单又好用的神器—&m...
    99+
    2024-04-02
  • Beam中的模式匹配怎么实现
    在Beam中,模式匹配可以通过使用Match和Case来实现。Match用于指定要匹配的值,Case用于定义匹配的模式和对应的处理逻...
    99+
    2024-04-02
  • PHP中使用Redis实现模式匹配
    在 web 开发中,Redis 已经成为了非常流行的缓存和数据库,而 PHP 也是广泛使用的 web 开发语言。结合这两者,我们可以在 PHP 中使用 Redis 来实现模式匹配的功能,极大地提高了网站的性能和用户体验。Redis 是一款基...
    99+
    2023-05-15
    PHP redis 模式匹配
  • Scala模式匹配的方法
    这篇文章主要介绍“Scala模式匹配的方法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Scala模式匹配的方法”文章能帮助大家解决问题。简单匹配Scala的模式匹配最常用于match语句中。下面是...
    99+
    2023-06-27
  • C#8.0中的模式匹配
    C# 8.0中的模式匹配相对C# 7.0来说有了进一步的增强,对于如下类: class Point { public int X { get; } public in...
    99+
    2024-04-02
  • Python实现字符串模糊匹配方式
    目录Python字符串模糊匹配包含四个参数python-re模块,模糊匹配Python字符串模糊匹配 Python的difflib库中get_close_matches方法 包含四个...
    99+
    2024-04-02
  • C语言中如何实现模式匹配
    这篇文章主要介绍了C语言中如何实现模式匹配的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言中如何实现模式匹配文章都会有所收获,下面我们一起来看看吧。C语言数据结构中串的模式匹配串的模式匹配问题:朴素算法与K...
    99+
    2023-06-16
  • opencv C++模板匹配的简单实现
    目录一简单实现二函数及原理讲解1matchTemplate()参数详解2minMaxLoc()函数一 简单实现 #include <opencv2/opencv.hpp>...
    99+
    2024-04-02
  • opencv C++模板匹配的实现方法
    这篇文章主要介绍“opencv C++模板匹配的实现方法”,在日常操作中,相信很多人在opencv C++模板匹配的实现方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”opencv&nb...
    99+
    2023-06-29
  • React研发人员的超强工具有哪些
    这篇文章主要讲解了“React研发人员的超强工具有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“React研发人员的超强工具有哪些”吧!1. Webpa...
    99+
    2024-04-02
  • C#模式匹配有哪些及怎么实现
    这篇文章主要介绍“C#模式匹配有哪些及怎么实现”,在日常操作中,相信很多人在C#模式匹配有哪些及怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#模式匹配有哪些及怎么实现”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-29
  • 使用Spring自身提供的地址匹配工具匹配URL操作
    目录使用Spring自身提供的地址匹配工具匹配URLspring url路径匹配用法经验介绍先贴一段代码来快速了解一下它的用法总结如下ANT方式的通配符有三种url路径匹配规则使用S...
    99+
    2024-04-02
  • Scala中的模式匹配是什么
    这篇文章主要介绍Scala中的模式匹配是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性,Sca...
    99+
    2023-06-27
  • python 字符串模糊匹配Fuzzywuzzy的实现
    目录(1)安装(2)接口说明(3)使用Python提供fuzzywuzzy模块,不仅可用于计算两个字符串之间的相似度,而且还提供排序接口能从大量候选集中找到最相似的句子。 (1)安装...
    99+
    2024-04-02
  • 匹配重复模式的正则表达式
    小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《匹配重复模式的正则表达式》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!问题内容我有以...
    99+
    2024-04-04
  • MySQL中的字符串模式匹配实例讲解
    这篇文章主要介绍“MySQL中的字符串模式匹配实例讲解”,在日常操作中,相信很多人在MySQL中的字符串模式匹配实例讲解问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQ...
    99+
    2024-04-02
  • Qt实现模糊匹配功能的实例详解
    目录1.准备基础数据2.创建并实例化匹配类3.控件绑定对于浏览器的使用,我想大家一定不会陌生吧,输入要搜索的内容时,会出现相应的匹配信息。 那么,今天我要讲述的也是这样一个功能。 首...
    99+
    2022-11-13
    Qt模糊匹配功能 Qt模糊匹配
  • 利用PHP正则表达式函数实现强大的数据匹配功能
    利用PHP正则表达式函数实现强大的数据匹配功能正则表达式是一种强大的数据匹配工具,能够高效地对字符串进行模式匹配。在PHP中,正则表达式函数提供了许多功能,使得数据处理和筛选变得更加灵活和方便。一、正则表达式的基本语法正则表达式由一系列字符...
    99+
    2023-11-20
    正则表达式 关键词:PHP 数据匹配
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作