基本的字符串位置查找方法Python 查找字符串使用 变量.find("要查找的内容"[,开始位置,结束位置]),开始位置和结束位置,表示要查找的范围,为空则表示查找所有。查找到后会返回位置,位置从0开始算,如果每找到则返回-1。

str = 'a,hello'

print str.find('hello') # 在字符串str里查找字符串hello

>> 2 # 输出结果

朴素匹配算法

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

target = 'abb aba'

pattern = 'aba'

def match(target, pattern):

i = j = 0

n, m = len(target), len(pattern)

while i < n and j < m:

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

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

i, j = i+1, j+1

else:

# 如果字符不相等则目标下标切换到不相等的下标

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

i = i - j + 1

j = 0

if j == m:

return i - j

return -1

把上面的加上print后打印一遍

#修改的地方

else:

i = i -j + 1

j = 0

print(target[i], pattern[j], i, j)

# 打印结果

b a 1 0

b a 2 0

a 3 0

a a 4 0

循环会一直到相等的匹配值, 这个方法效率低下,主要是在不匹配时会重新把模板字符循环一次。最多可能会出现 m * (n-m +1)次。m是模板字符的长度,n-m + 1是排除不等字符的次数。

KMP 算法

kmp是通过已知匹配的字符进行移位的算法,比如上面的abb 中跟abc比较的话 ab是已知的。

def match(target, pattern):

i = j = 0

n, m = len(target), len(pattern)

while i < n and j < m:

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

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

i, j = i+1, j+1

else:

# 这里通过next 函数来判断位移个数

i = i - j + pattern_next(pattern[:j])

j = 0

if j == m:

return i - j

return -1

def pattern_next(s):

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

suffix = [s[i+1:] for i in range(len(s)-1)]

l = list(set(prefix) & set(suffix))

return len(l)

python字符串查找的四种方法_Python中的字符串查找操作方法总结相关推荐

  1. python字符串换行的三种方式_python中的字符串内部换行方法

    python中的字符串内部换行方法 python里有两种在字符串内部换行的方式(使用一个print打印多行字符串). 首先使用\n的方法大家肯定都知道了. 然后是使用 ''' 三个单引号大方法. 在交 ...

  2. python库的调用三种方法_python中调用库的方法

    python中调用库的方法 发布时间:2020-09-02 11:41:21 来源:亿速云 阅读:93 作者:小新 小编给大家分享一下python中调用库的方法,希望大家阅读完这篇文章后大所收获,下面 ...

  3. python字典添加元素的2种方法_python中怎么向字典添加元素

    python中向字典添加元素的方法:可以通过给定键值对直接向字典中添加元素,如[aa['价格'] = 100 aa['价格'] = 100]. 方法一:直接添加,给定键值对 (推荐教程:python视 ...

  4. Java中字符串中子串的查找共有四种方法(indexof())

    2019独角兽企业重金招聘Python工程师标准>>> public class FirstDemo { /** *API中String的常用方法 */ // 查找指定字符串是否存在 ...

  5. 【转】Java中字符串中子串的查找共有四种方法(indexof())

    原文网址:http://wfly2004.blog.163.com/blog/static/1176427201032692927349/ Java中字符串中子串的查找共有四种方法,如下: 1.int ...

  6. python输入字符串并反序result_python字符串反转的四种方法详解

    python字符串反转的四种方法详解 这篇文章主要介绍了python字符串反转的四种详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.用red ...

  7. java indexof 子字符串_Java中字符串中子串的查找共有四种方法(indexof())

    Java中字符串中子串的查找共有四种方法(indexof()) Java中字符串中子串的查找共有四种方法,如下: 1.int indexOf(String str) :返回第一次出现的指定子字符串在此 ...

  8. Python 数据降噪处理的四种方法——均值滤波、小波变换、奇异值分解、改变binSize

    Python 数据降噪处理的四种方法--均值滤波.小波变换.奇异值分解.改变binSize github主页:https://github.com/Taot-chen 一.均值滤波 1)算法思想 给定 ...

  9. 用python打开浏览器的四种方法

    python打开浏览器的四种方法 1.system方法 import os os.system(r'C:\"Program Files (x86)"\"Google&qu ...

最新文章

  1. nullable java_java-持久性@Column nullable = false可以插入null
  2. Linux命令——expr
  3. 皮一皮:充实的一天...
  4. aspx隐藏前台控件div_javascript总结--div
  5. gitlab 构建tag_GitLab常用命令 分支 Tag 配置 操作
  6. K8S原来如此简单(一)K8S核心组件与基本原理
  7. python计算两个点之间的距离_python实现两个经纬度点之间的距离和方位角的方法...
  8. Google Chrome 浏览器JS无法更新解决办法
  9. cdcqの省选膜你赛
  10. informix(南大通用)sql语法的差异
  11. 七种Spring事务传播特性
  12. Windows消息机制概述
  13. Unity Animator动画状态机 深入理解(一)
  14. Python设计模式:外观模式
  15. Linux命令大全详解
  16. 机器学习(一元线性回归)
  17. 全国首个兆瓦级地铁光伏项目投产
  18. Redis(十):sentinel.conf 配置文件说明
  19. 计算机组装与维护集体备课,浅谈集体备课
  20. 冲突处理方法----分离链接法

热门文章

  1. MultipartFile与File之间的相互转换
  2. python pop函数 索引_[python] 字典和列表中的pop()函数
  3. python脚本批量登录crt_Python实现批量新建SecureCRT Session
  4. 赣南师范大学科技学院计算机科学与技术,2021江西独立学院转设最新消息(新增两所):赣南师范大学科技学院转设公办?...
  5. 作文未来的计算机医生300字,医生作文300字【3篇】
  6. MATLAB模拟声压分布,基于Matlab仿真软件构建圆形压电晶体三维模型
  7. 远程连接IBM MQ 7.5的“AMQ4036”错误解决
  8. element-ui的input加单位符号
  9. Android开发笔记(十六)秋千摇摆动画SwingAnimation
  10. 根据条件返回相应值 decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)...