当前位置: 首页 > 科技观察

这款Python神器,能让你摸鱼久久!

时间:2023-03-19 01:05:33 科技观察

我敢用我的荣誉保证,使用后,你写代码的效率会大大提高!Pampy是第一个普及模式匹配的神。模式匹配是给定一个特定的模式,利用这个模式来检查一个序列或字符串是否符合这个模式,这种技术常用于自然语言处理中。Pampy是一个Python的模式匹配类库,一个只有150行的类库。这个库优雅高效,值得广大Python码友加入自己的基础开发栈。巧合的是,该程序还有一个同名的Pampy.js库的JavaScript版本。有兴趣的可以阅读源码,复制到更多的开发语言中。这个库的安装方式也很普通:pipinstallpampyPampy的花式匹配单个字符我们可以使用_来匹配单个字符:frompampyimport_,matcha=['a',1,'b',2,'c',3,'d',4]patter=['a',1,'b',_,'c',3,'d',4]action=lambdax:f'b是:{x}'print(match(a,patter,action))的结果是:b是:2从上面的例子可以看出,其实我们只是把_作为占位符。匹配时,找到对应的占位符元素。匹配字典我们可以匹配多级字典中任意一级的key或value:frompampyimport_,matchperson={'address':{'province':'Hubei','city':'Wuhan','district':'东湖高科'},'name':'先环'}patter={_:{_:'武汉'}}action=lambdak1,k2:({'k1':k1,'k2':k2})print(match(person,patter,action))结果是:{'k1':'address','k2':'city'}和前面的例子类似,占位符_是used,然后在action中定位占位符输出结果。匹配开头和结尾在上面的例子中,我们使用了占位符,但是占位符只能匹配一个字符。在下面的示例中,我们将使用HEAD和TAIL这两个关键字来匹配开头和结尾。他们可以批评任意数量的字符:frompampyimport_,match,HEAD,TAILa=['a',1,'b',2,'c',3,'d',4]patter=[HEAD,_,'b',2,'c',3,TAIL]action=lambdah,m,t:({'head':h,'middle':m,'tail':t})print(匹配(a,patter,action))运行上面的例子,结果是:{'head':'a','middle':1,'tail':['d',4]}我们从结果中可以看出HEADmatches对于一个字符,TAIL匹配两个字符。输出的时候,如果有多个字符,结果会以数组的形式给出。总结Pampy的例子很简单,大家一看就知道。看了几个例子,是不是有一种感觉:哇,竟然还有这样的神器!当然,Pampy的模式匹配并不局限于这几种方法,还有更多的方法可以去探索。