python字符串查找的四种方法_Python中的字符串查找操作方法总结
基本的字符串位置查找方法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中的字符串查找操作方法总结相关推荐
- python字符串换行的三种方式_python中的字符串内部换行方法
python中的字符串内部换行方法 python里有两种在字符串内部换行的方式(使用一个print打印多行字符串). 首先使用\n的方法大家肯定都知道了. 然后是使用 ''' 三个单引号大方法. 在交 ...
- python库的调用三种方法_python中调用库的方法
python中调用库的方法 发布时间:2020-09-02 11:41:21 来源:亿速云 阅读:93 作者:小新 小编给大家分享一下python中调用库的方法,希望大家阅读完这篇文章后大所收获,下面 ...
- python字典添加元素的2种方法_python中怎么向字典添加元素
python中向字典添加元素的方法:可以通过给定键值对直接向字典中添加元素,如[aa['价格'] = 100 aa['价格'] = 100]. 方法一:直接添加,给定键值对 (推荐教程:python视 ...
- Java中字符串中子串的查找共有四种方法(indexof())
2019独角兽企业重金招聘Python工程师标准>>> public class FirstDemo { /** *API中String的常用方法 */ // 查找指定字符串是否存在 ...
- 【转】Java中字符串中子串的查找共有四种方法(indexof())
原文网址:http://wfly2004.blog.163.com/blog/static/1176427201032692927349/ Java中字符串中子串的查找共有四种方法,如下: 1.int ...
- python输入字符串并反序result_python字符串反转的四种方法详解
python字符串反转的四种方法详解 这篇文章主要介绍了python字符串反转的四种详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.用red ...
- java indexof 子字符串_Java中字符串中子串的查找共有四种方法(indexof())
Java中字符串中子串的查找共有四种方法(indexof()) Java中字符串中子串的查找共有四种方法,如下: 1.int indexOf(String str) :返回第一次出现的指定子字符串在此 ...
- Python 数据降噪处理的四种方法——均值滤波、小波变换、奇异值分解、改变binSize
Python 数据降噪处理的四种方法--均值滤波.小波变换.奇异值分解.改变binSize github主页:https://github.com/Taot-chen 一.均值滤波 1)算法思想 给定 ...
- 用python打开浏览器的四种方法
python打开浏览器的四种方法 1.system方法 import os os.system(r'C:\"Program Files (x86)"\"Google&qu ...
最新文章
- nullable java_java-持久性@Column nullable = false可以插入null
- Linux命令——expr
- 皮一皮:充实的一天...
- aspx隐藏前台控件div_javascript总结--div
- gitlab 构建tag_GitLab常用命令 分支 Tag 配置 操作
- K8S原来如此简单(一)K8S核心组件与基本原理
- python计算两个点之间的距离_python实现两个经纬度点之间的距离和方位角的方法...
- Google Chrome 浏览器JS无法更新解决办法
- cdcqの省选膜你赛
- informix(南大通用)sql语法的差异
- 七种Spring事务传播特性
- Windows消息机制概述
- Unity Animator动画状态机 深入理解(一)
- Python设计模式:外观模式
- Linux命令大全详解
- 机器学习(一元线性回归)
- 全国首个兆瓦级地铁光伏项目投产
- Redis(十):sentinel.conf 配置文件说明
- 计算机组装与维护集体备课,浅谈集体备课
- 冲突处理方法----分离链接法
热门文章
- MultipartFile与File之间的相互转换
- python pop函数 索引_[python] 字典和列表中的pop()函数
- python脚本批量登录crt_Python实现批量新建SecureCRT Session
- 赣南师范大学科技学院计算机科学与技术,2021江西独立学院转设最新消息(新增两所):赣南师范大学科技学院转设公办?...
- 作文未来的计算机医生300字,医生作文300字【3篇】
- MATLAB模拟声压分布,基于Matlab仿真软件构建圆形压电晶体三维模型
- 远程连接IBM MQ 7.5的“AMQ4036”错误解决
- element-ui的input加单位符号
- Android开发笔记(十六)秋千摇摆动画SwingAnimation
- 根据条件返回相应值 decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)...