当前位置: 首页 > news >正文

Python判断字符串是否包含特定子串的7种方法

目录

    • 1、使用 in 和 not in
    • 2、使用 find 方法
    • 3、使用 index 方法
    • 4、使用 count 方法
    • 5、通过魔法方法
    • 6、借助 operator
    • 7、使用正则匹配

转自:https://cloud.tencent.com/developer/article/1699719

我们经常会遇这样一个需求:判断字符串中是否包含某个关键词,也就是特定的子字符串。比如从一堆书籍名称中找出含有“python”的书名。

判断两个字符串相等很简单,直接 == 就可以了。其实判断包含子串也非常容易,而且还不止一种方法。下面我们就给大家分享 7 种可以达到此效果的方法:

1、使用 in 和 not in

innot inPython 中是很常用的关键字,我们将它们归类为成员运算符。

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

>>> "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 Trueexcept ValueError:return Falseprint(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) > 0print(is_in("hello, python", "llo"))  # True
print(is_in("hello, python", "lol"))  # False

5、通过魔法方法

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

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

示例如下;

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

这个用法与使用 innot 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 redef is_in(full_str, sub_str):if re.findall(sub_str, full_str):return Trueelse:return Falseprint(is_in("hello, python", "llo"))  # True
print(is_in("hello, python", "lol"))  # False
http://www.lryc.cn/news/36922.html

相关文章:

  • aop实现接口访问频率限制
  • Hive---窗口函数
  • JavaSe第7次笔记
  • 什么是 Service 以及描述下它的生命周期。Service 有哪些启动方法,有 什么区别,怎样停用 Service?
  • Redis部署
  • AT32F437制作Bootloader然后实现Http OTA升级
  • Springboot项目启动初始化数据缓存
  • 深度学习必备知识——模型数据集Yolo与Voc格式文件相互转化
  • 数据、数据资源及数据资产管理的区别
  • 标度不变性(scale invariance)与无标度(scale-free)概念辨析
  • WMS仓库管理系统解决方案,实现仓库管理一体化
  • css常见定位、居中方案_css定位居中
  • 【微信小程序】-- 自定义组件 -- 创建与引用 样式(三十二)
  • ArangoDB——AQL编辑器
  • Lesson 9.1 集成学习的三大关键领域、Bagging 方法的基本思想和 RandomForestRegressor 的实现
  • basic1.0链码部署(基于test-network 环境ubuntu20.04腾讯云)
  • Android---系统启动流程
  • 【网络】http协议
  • Thread::interrupted() 什么意思? 如何中断线程?
  • Oracle OCP 19c 考试(1Z0-083)中关于Oracle不完全恢复的考点(文末附录像)
  • 一起来学习配置Combo接口吧!
  • C++模拟实现红黑树
  • HTTPS协议之SSL/TLS详解(下)
  • OLE对象是什么?为什么要在CAD图形中插入OLE对象?
  • 【微信小程序】-- 自定义组件 -- 数据、方法和属性(三十三)
  • 【Spring 深入学习】AOP的前世今生之代理模式
  • 操作系统复试
  • 藏经阁(五)温湿度传感器 SHT3x-DIS 手册 解析
  • PCB焊盘设计基本原则
  • mysql锁分类大全