千锋教育-做有情怀、有良心、有品质的职业教育机构

python怎么实现模式匹配

来源:千锋教育
发布时间:2023-11-10 21:42:30
分享

python通过BF算法实现关键词匹配,BF算法,即暴风(BruteForce)算法,是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。BF算法是一种蛮力算法。

代码如下:

#!/usr/bin/python

#-*-coding:UTF-8

#filenameBF

importtime

"""

t="thisisabigapple,thisisabigapple,thisisabigapple,thisisabigapple."

p="apple"

"""

t="为什么叫向量空间模型呢?其实我们可以把每个词给看成一个维度,而词的频率看成其值(有向),即向量,这样每篇文章的词及其频率就构成了一个i维空间图,两个文档的相似度就是两个空间图的接近度。假设文章只有两维的话,那么空间图就可以画在一个平面直角坐标系当中,读者可以假想两篇只有两个词的文章画图进行理解。"

p="读者"

i=0

count=0

start=time.time()

while(i<=len(t)-len(p)):

j=0

while(t[i]==p[j]):

i=i+1

j=j+1

ifj==len(p):

break

elif(j==len(p)-1):

count=count+1

else:

i=i+1

j=0

printcount

printtime.time()-start

算法思想:目标串t与模式串p逐词比较,若对应位匹配,则进行下一位比较;若不相同,p右移1位,从p的第1位重新开始比较。

算法特点:整体移动方向:可认为在固定的情况下,p从左向右滑动;匹配比较时,从p的最左边位开始向右逐位与t串中对应位比较。p的滑动距离为1,这导致BF算法匹配效率低(相比其他算法,如:BM,KMP,滑动没有跳跃)。

该算法的时间复杂度为O(len(t)*len(p)),空间复杂度为O(len(t)+len(p))

以上内容为大家介绍了Python培训之怎么实现模式匹配,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:千锋教育。

声明:本站部分稿件版权来源于网络,如有侵犯版权,请及时联系我们。

相关推荐

  • python偏函数如何理解 python偏函数如何理解1、偏函数,是对原始函数的二次封装,是将现有函数的部分参数预先绑定到指定值,从而获得新的函数。2、定义偏函数,需要使用partial关键字(位于functools模块中。语法
  • python字符串字面量是什么 1、Python使用单引号(&#39;)、双引号(&#39;)、三重单引号(&#39;&#39;&#39;&#39;)和三重双引号(""")来表示字符串字面量。2、字符串字面量需要使用相同类型的引号。
  • python__new__()和__init__()有什么区别? 在python中,__new__()不是一定要有,只有继承自object的类才有,该方法可以return父类(通过super(当前类名,cls).__new__())出来的实例,或者直接是object
  • pythonimport是怎么实现的? 基本概念:模块(module):其实就是一个py文件,里面定义了各种变量,函数,类。模块除了内建模块(可以用过dir(__builtins__)查看有哪些内建函数),就是非内建模块,这一部分模块就需要
  • pythonpython是如何编译运行的 这里的解释执行是相对于编译执行而言的。我们都知道,使用C/C++之类的编译性语言编写的程序,是需要从源文件转换成计算机使用的机器语言,经过链接器链接之后形成了二进制的可执行文件。运行该程序的时候,就可
  • pythonPython可以用来做什么? Python技术可做web开发很多人只知道Java、PHP可做web开发,但对于Python也能做web开发却知之甚少。很多人可能不知道,Python其实是和互联网一起长大的。作为动态语言,并且具有更