python七种方法判断字符串是否包含子串


Posted in Python onAugust 18, 2020

1. 使用 in 和 not in

in 和 not in 在 Python 中是很常用的关键字,我们将它们归类为 成员运算符。

使用这两个成员运算符,可以很让我们很直观清晰的判断一个对象是否在另一个对象中,示例如下:

>>> "llo" in "hello, python" 
True 
>>> 
>>> "lol" in "hello, python" 
False

2. 使用 find 方法

使用 字符串 对象的 find 方法,如果有找到子串,就可以返回指定子串在字符串中的出现位置,如果没有找到,就返回 -1

>>> "hello, python".find("llo") != -1 
True 
>>> "hello, python".find("lol") != -1 
False 
>>

3. 使用 index 方法

字符串对象有一个 index 方法,可以返回指定子串在该字符串中第一次出现的索引,如果没有找到会抛出异常,因此使用时需要注意捕获。

def is_in(full_str, sub_str): 
  try: 
    full_str.index(sub_str) 
    return True 
  except ValueError: 
    return False 
 
print(is_in("hello, python", "llo")) # True 
print(is_in("hello, python", "lol")) # False

4. 使用 count 方法

利用和 index 这种曲线救国的思路,同样我们可以使用 count 的方法来判断。

只要判断结果大于 0 就说明子串存在于字符串中。

def is_in(full_str, sub_str): 
  return full_str.count(sub_str) > 0 
 
print(is_in("hello, python", "llo")) # True 
print(is_in("hello, python", "lol")) # False

5. 通过魔法方法

在第一种方法中,我们使用 in 和 not in 判断一个子串是否存在于另一个字符中,实际上当你使用 in 和 not in 时,Python 解释器会先去检查该对象是否有 __contains__ 魔法方法。

若有就执行它,若没有,Python 就自动会迭代整个序列,只要找到了需要的一项就返回 True 。

示例如下:

>>> "hello, python".__contains__("llo") 
True 
>>> 
>>> "hello, python".__contains__("lol") 
False 
>>>

这个用法与使用 in 和 not in 没有区别,但不排除有人会特意写成这样来增加代码的理解难度。

6. 借助 operator

operator模块是python中内置的操作符函数接口,它定义了一些算术和比较内置操作的函数。operator模块是用c实现的,所以执行速度比 python 代码快。

在 operator 中有一个方法 contains 可以很方便地判断子串是否在字符串中。

>>> import operator 
>>> 
>>> operator.contains("hello, python", "llo") 
True 
>>> operator.contains("hello, python", "lol") 
False 
>>>

7. 使用正则匹配

说到查找功能,那正则绝对可以说是专业的工具,多复杂的查找规则,都能满足你。

对于判断字符串是否存在于另一个字符串中的这个需求,使用正则简直就是大材小用。

import re 
 
def is_in(full_str, sub_str): 
  if re.findall(sub_str, full_str): 
    return True 
  else: 
    return False 
 
print(is_in("hello, python", "llo")) # True 
print(is_in("hello, python", "lol")) # False

以上就是python七种方法判断字符串是否包含子串的详细内容,更多关于python 字符串的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python StringIO模块实现在内存缓冲区中读写数据
Apr 08 Python
Python中SOAP项目的介绍及其在web开发中的应用
Apr 14 Python
Python模糊查询本地文件夹去除文件后缀的实例(7行代码)
Nov 09 Python
利用arcgis的python读取要素的X,Y方法
Dec 22 Python
Python正则表达式匹配和提取IP地址
Jun 06 Python
python opencv捕获摄像头并显示内容的实现
Jul 11 Python
tensorflow 环境变量设置方式
Feb 06 Python
Python Numpy中数据的常用保存与读取方法
Apr 01 Python
让Django的BooleanField支持字符串形式的输入方式
May 20 Python
Python新手如何进行闭包时绑定变量操作
May 29 Python
python从Oracle读取数据生成图表
Oct 14 Python
Python学习之time模块的基本使用
Jan 17 Python
Python使用socket模块实现简单tcp通信
Aug 18 #Python
python 浮点数四舍五入需要注意的地方
Aug 18 #Python
Python filter过滤器原理及实例应用
Aug 18 #Python
Python lambda表达式原理及用法解析
Aug 18 #Python
python 使用建议与技巧分享(四)
Aug 18 #Python
Python正则re模块使用步骤及原理解析
Aug 18 #Python
python使用建议技巧分享(三)
Aug 18 #Python
You might like
解析PHP中的内存管理,PHP动态分配和释放内存
2013/06/28 PHP
PHP中替换键名的简易方法示例详解
2014/01/07 PHP
Javascript 个人笔记(没有整理,很乱)
2007/07/07 Javascript
建议大家看下JavaScript重要知识更新
2007/07/08 Javascript
fix-ie5.js扩展在IE5下不能使用的几个方法
2007/08/20 Javascript
javascript IFrame 强制刷新代码
2009/07/23 Javascript
JavaScript的eval JSON object问题
2009/11/15 Javascript
基于jquery的一个图片hover的插件
2010/04/24 Javascript
悄悄用脚本检查你访问过哪些网站的代码
2010/12/04 Javascript
JavaScript作用域链使用介绍
2013/08/29 Javascript
Web打印解决方案之普通报表打印功能
2016/08/29 Javascript
微信小程序 数组(增,删,改,查)等操作实例详解
2017/01/05 Javascript
JavaScript登录验证基础教程
2017/11/01 Javascript
JS实现分页浏览横向图片(类轮播)实例代码
2017/11/06 Javascript
axios全局请求参数设置,请求及返回拦截器的方法
2018/03/05 Javascript
详解关于element el-button使用$attrs的一个注意要点
2018/11/09 Javascript
node微信开发之获取access_token+自定义菜单
2019/03/17 Javascript
Node.js控制台彩色输出的方法与原理实例详解
2019/12/01 Javascript
JS实现动态无缝轮播
2020/01/11 Javascript
node.js制作一个简单的登录拦截器
2020/02/10 Javascript
Vue实现省市区三级联动
2020/12/27 Vue.js
python使用正则表达式提取网页URL的方法
2015/05/26 Python
python2.7到3.x迁移指南
2018/02/01 Python
python DataFrame 修改列的顺序实例
2018/04/10 Python
Python实现检测文件MD5值的方法示例
2018/04/11 Python
Python 写入训练日志文件并控制台输出解析
2019/08/13 Python
django 实现celery动态设置周期任务执行时间
2019/11/19 Python
高中生学习总结的自我评价范文
2013/10/13 职场文书
高中打架检讨书
2014/02/13 职场文书
高中微机老师自我鉴定
2014/02/16 职场文书
活动总结格式范文
2014/04/26 职场文书
工作会议方案
2014/05/21 职场文书
政风行风建设整改方案
2014/10/27 职场文书
2015年保洁工作总结范文
2015/04/28 职场文书
2016年幼儿园教研活动总结
2016/04/05 职场文书
解决Golang中goroutine执行速度的问题
2021/05/02 Golang