• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > Python中的字符串查找操作方法总结

Python中的字符串查找操作方法总结

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了python 字符串操作,python中的字符串操作,python字符串方法,python中字符串的方法,python字符串处理等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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

str = 'a,hello' 
print str.find('hello') # 在字符串str里查找字符串hello 
>> 2     # 输出结果 

</div>

朴素匹配算法

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

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

</div>

把上面的加上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

</div>

循环会一直到相等的匹配值, 这个方法效率低下,主要是在不匹配时会重新把模板字符循环一次。最多可能会出现 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)
</div>

</div>

您可能想查找下面的文章:

  • Python中的字符串查找操作方法总结
  • python字符串的常用操作方法小结
  • python列表的常用操作方法小结
  • Python中几种操作字符串的方法的介绍
  • Python实现获取操作系统版本信息方法
  • Python实现获取操作系统版本信息方法
  • Python判断操作系统类型代码分享
  • Python判断操作系统类型代码分享
  • Python 字符串操作方法大全

相关文章

  • python中sets模块的用法实例
  • python使用7z解压软件备份文件脚本分享
  • Python随机生成彩票号码的方法
  • 使用Python的PEAK来适配协议的教程
  • python链接Oracle数据库的方法
  • Python爬取网易云音乐热门评论
  • Python 爬虫学习笔记之单线程爬虫
  • 举例讲解Python设计模式编程中的访问者与观察者模式
  • python中redis的安装和使用
  • 在Python中使用Mako模版库的简单教程

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • 详细解析Python当中的数据类型和变量
    • python实现多线程抓取知乎用户
    • python Django批量导入不重复数据
    • Python使用dis模块把Python反编译为字节码的用法详解
    • Python中还原JavaScript的escape函数编码后字符串的方法
    • python开发环境PyScripter中文乱码问题解决方案
    • Python实现约瑟夫环问题的方法
    • Python中用函数作为返回值和实现闭包的教程
    • Python中字符串的格式化方法小结
    • python实现斐波那契递归函数的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有