51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 964|回复: 0
打印 上一主题 下一主题

[python] Python有神器让你上班能摸鱼?

[复制链接]
  • TA的每日心情
    无聊
    11 小时前
  • 签到天数: 968 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2022-8-17 10:36:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    我敢以我的荣誉保证,用了它之后,你写代码的效率可以蹭蹭蹭地提升!
      Pampy 是哪路神仙
      首先普及一下模式匹配。
      模式匹配即给定某种模式,用这种模式去检查序列或字符串是否符合这种模式,这种技术在自然语言处理中经常使用。
      Pampy 是Python的一个模式匹配类库,一个只有150行的类库,该库优雅、高效值得广大Python的码农加入自己基本开发栈中。
      无独有偶,该程序还有一个同名的 Pampy.js 的 JavaScript 版本库。
      你如果有兴趣,可以阅读源码,将其照搬到更多的开发语言中。
      安装这个库的方式也是老生常谈了:
      ·pip install pampy
      Pampy 的花式秀
      匹配单个字符
      我们可以用 _ 来匹配单个字符:
    1. from pampy import _,match
    2.   a=['a',1,'b',2,'c',3,'d',4]
    3.   patter = ['a',1,'b',_,'c',3,'d',4]
    4.   action=lambda x: f'b is: {x}'
    5.   print(match(a,patter,action))
    复制代码
    运行结果是:
      ·b is: 2
      从上面例子可以看出,实际上我们只是用 _ 充当一个占位符,当匹配的时候,找到这个占位符对应的元素即可。
      匹配字典
      我们可以匹配多层级的字典中的任意一个层级的 key 或者 value:
    1. from pampy import _, match
    2.   person = {
    3.      'address': {'province': '湖北', 'city': '武汉', 'district': '东湖高新'},
    4.      'name': '闲欢'
    5.   }
    6.   patter = {_: {_: '武汉'}}
    7.   action = lambda k1, k2: ({'k1': k1, 'k2': k2})
    8.   print(match(person, patter, action))
    复制代码
     运行结果是:
      ·{'k1': 'address', 'k2': 'city'}
      跟前一个例子类似,这里使用 _ 这个占位符占位,然后在 action 里面定位占位符,即可输出结果。
      匹配开头和结尾
      上面的例子,我们都是使用占位符来占位,但是占位符只能匹配一个字符,下面的例子,我们将用 HEAD 和 TAIL 这两个关键词来匹配开头和结尾,他们可以批评任意多个字符:
    1. from pampy import _,match,HEAD,TAIL
    2.   a=['a',1,'b',2,'c',3,'d',4]
    3.   patter = [HEAD,_,'b',2,'c',3,TAIL]
    4.   action=lambda h,m,t: ({'head':h,'middle':m,'tail':t})
    5.   print(match(a,patter,action))
    复制代码
    运行上面例子,结果是:
      ·{'head': 'a', 'middle': 1, 'tail': ['d', 4]}
      我们可以从结果看到,HEAD 匹配了一个字符,TAIL 匹配了两个字符,输出的时候,如果是多个字符,结果会以数组的方式给出。
      总结
      Pampy 的例子都很简单,大家一阅便知。通过看着几个例子,是不是有种感觉:哇,还有这等神器!
      当然,Pampy 的模式匹配不止这么几种方式,还有更多方式有待大家去探索。




    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-6-19 21:08 , Processed in 0.064536 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表