判断字符串是否包含子串,居然有七种方法?

inin 和 not in 在 Python 中是很常用的关键字,我们将它们归类为 成员运算符。使用这两个成员运算符,可以很让我们很直观清晰的判断一个对象是否在另一个对象中。 2020-08-17 09:22:30 字符串子串对象 糟糕,我写的Bug要被封印在北极1000年! 各位程序员大佬们们,激动的消息来了,平时调侃的“祖传代码”真的实现了,哈哈! 2020-08-17 08:49:06 北极程序员开源 让你编码嗨到停不下来的8个VSCode插件 拥有合适的工具可以让你的开发工作变得更加轻松。许多开发人员使用 VSCode 作为开发工具,VSCode 允许安装各种扩展工具。 2020-08-17 08:39:12 VSCode开发工具 提升布局能力!理解 CSS 的多种背景及使用场景和技巧 CSS background是最常用的CSS属性之一。然而,并不是所有开发人员都知道使用多种背景。这段时间都在关注使用多种背景场景。在本文中,会详细介绍background-image`属性,并结合图形来解释多个背景使用方式以及其实际好处。 2020-08-17 08:30:46 CSS 技巧场景 如何实现一个iOS AOP框架? Aspect使用了OC的消息转发流程,有一定的性能消耗。本文作者使用C++设计语言,并使用libffi进行核心trampoline函数的设计,实现了一个iOS AOP框架——Lokie。相比于业内熟知的Aspects,性能上有了明显的提升。本文将分享Lokie的具体实现思路。

inin 和 not in 在 Python 中是很常用的关键字,我们将它们归类为 成员运算符。使用这两个成员运算符,可以很让我们很直观清晰的判断一个对象是否在另一个对象中。

1. 使用 in 和 not

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

[[338019]]

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

  1. >>>"llo"in"hello,python"
  2. True
  3. >>>
  4. >>>"lol"in"hello,python"
  5. False

2. 使用 find 方法

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

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

3. 使用 index 方法

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

  1. defis_in(full_str,sub_str):
  2. try:
  3. full_str.index(sub_str)
  4. returnTrue
  5. exceptValueError:
  6. returnFalse
  7. print(is_in("hello,python","llo"))#True
  8. print(is_in("hello,python","lol"))#False

4. 使用 count 方法

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

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

  1. defis_in(full_str,sub_str):
  2. returnfull_str.count(sub_str)>0
  3. print(is_in("hello,python","llo"))#True
  4. print(is_in("hello,python","lol"))#False

5. 通过魔法方法

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

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

示例如下:

  1. >>>"hello,python".__contains__("llo")
  2. True
  3. >>>
  4. >>>"hello,python".__contains__("lol")
  5. False
  6. >>>

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

6. 借助 operator

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

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

  1. >>>importoperator
  2. >>>
  3. >>>operator.contains("hello,python","llo")
  4. True
  5. >>>operator.contains("hello,python","lol")
  6. False
  7. >>>

7. 使用正则匹配

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

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

  1. importre
  2. defis_in(full_str,sub_str):
  3. ifre.findall(sub_str,full_str):
  4. returnTrue
  5. else:
  6. returnFalse
  7. print(is_in("hello,python","llo"))#True
  8. print(is_in("hello,python","lol"))#False

【责任编辑:赵宁宁 TEL:(010)68476606】

©本文为清一色官方代发,观点仅代表作者本人,与清一色无关。清一色对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。本文不作为投资理财建议,请读者仅作参考,并请自行承担全部责任。文中部分文字/图片/视频/音频等来源于网络,如侵犯到著作权人的权利,请与我们联系(微信/QQ:1074760229)。转载请注明出处:清一色财经

(0)
打赏 微信扫码打赏 微信扫码打赏 支付宝扫码打赏 支付宝扫码打赏
清一色的头像清一色管理团队
上一篇 2023年5月5日 12:42
下一篇 2023年5月5日 12:43

相关推荐

发表评论

登录后才能评论

联系我们

在线咨询:1643011589-QQbutton

手机:13798586780

QQ/微信:1074760229

QQ群:551893940

工作时间:工作日9:00-18:00,节假日休息

关注微信