python字符串查找的四种方法,python在字符串中查找指定字符

  python字符串查找的四种方法,python在字符串中查找指定字符

  Python搜索字符串使用变量。find(查找什么[,起始位置,结束位置]),起始位置和结束位置表示要查找的范围,如果为空,则表示查找全部。找到了就还位置。位置从0开始,找到就返回-1。

  “你好”

  Print.find (hello) #在字符串str中查找字符串hello

  2 #输出结果

  朴素匹配算法

  朴素匹配算法是目标字符串和模板字符串一对一的匹配。如果匹配,下标向右移动一位,否则,下标被清除,匹配重新开始。

  target=abb aba

  模式=aba

  定义匹配(目标,模式):

  i=j=0

  n,m=len(目标),len(模式)

  而i n和j m:

  #如果字符相等,则目标和模板的下标都向右移动。

  if target[i]==pattern[j]:

  I,j=i 1,j 1

  否则:

  #如果字符不相等,目标下标将切换到不相等的下标。

  #模板下标移动到初始下标

  i=i - j 1

  j=0

  如果j==m:

  返回i - j

  返回-1

  在上面加上print,再打印一次。

  #在哪里修改的

  否则:

  i=i -j 1

  j=0

  打印(目标[i],图案[j],I,j)

  #打印结果

  b a 1 0

  b20

  a 3 0

  a 4 0

  循环,直到匹配值相等。这种方法效率低,主要是因为没有匹配时模板字符会再次循环。最多可能有m *(n-m-1)次。m是模板字符的长度,n-m 1是排除不相等字符的次数。

  knuth morris pratt算法

  Kmp是一种根据已知匹配字符进行移位的算法。例如,abb与上面ABB中的abc比较时是已知的。

  定义匹配(目标,模式):

  i=j=0

  n,m=len(目标),len(模式)

  而i n和j m:

  #如果字符相等,则目标和模板的下标都向右移动。

  if if j==-1且target[i]==pattern[j]:

  I,j=i 1,j 1

  否则:

  #这里,位移的个数由下一个函数判断。

  i=i - j模式_下一个(模式[:j])

  j=0

  如果j==m:

  返回i - j

  返回-1

  定义模式_下一个:

  prefix=[s[:I 1]for I in range(len(s)-1)]

  后缀=[s[i 1:] for i in range(len(s)-1)]

  l=list(set(前缀)set(后缀))

  返回长度(l)

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: