如何在 Python 中检查字符串是否包含子字符串

Jinku Hu 2023年10月10日
  1. in 操作符检查字符串是否包含子字符串
  2. str.find() 检查字符串是否包含子字符串的方法
  3. str.index() 检查字符串是否包含子字符串的方法
  4. 子字符串检查方法结论
如何在 Python 中检查字符串是否包含子字符串

我们经常需要检查给定的字符串是否包含特定的子字符串。我们将在此处列出一些方法,然后比较运行时间性能以选择最有效的方法。

我们将字符串- It is a given string 作为给定字符串,given 是要检查的子字符串。

in 操作符检查字符串是否包含子字符串

in 操作符是成员资格检查运算符。x in y 评估为 True 如果 xy 的成员,或者换句话说,y 包含 x

如果字符串 y 包含子字符串 x,则返回 True

>>> "given" in "It is a given string"
True
>>> "gaven" in "It is a given string"
False

in 操作符性能

import timeit


def in_method(given, sub):
    return sub in given


print(min(timeit.repeat(lambda: in_method("It is a given string", "given"))))
0.2888628

str.find() 检查字符串是否包含子字符串的方法

find 是一个内置的 string 方法 - str.find(sub)

假如 sub 被发现,它返回 str 的最小的索引,否则如果 sub 没有找到的话,返回 -1

>>> givenStr = 'It is a given string'
>>> givenStr.find('given')
8
>>> givenStr.find('gaven')
-1

str.find() 方法性能

import timeit


def find_method(given, sub):
    return given.find(sub)


print(min(timeit.repeat(lambda: find_method("It is a given string", "given"))))
0.42845349999999993

str.index() 检查字符串是否包含子字符串的方法

str.index(sub) 是一个 string 内置方法,该方法返回找到 sub 位置的 str 最低索引。如果找不到 sub 子字符串,它将报错 ValueError

>>> givenStr = 'It is a given string'
>>> givenStr.index('given')
8
>>> givenStr.index('gaven')
Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    givenStr.index('gaven')
ValueError: substring not found

str.index() 方法性能

import timeit


def find_method(given, sub):
    return given.find(sub)


print(min(timeit.repeat(lambda: find_method("It is a given string", "given"))))
0.457951

子字符串检查方法结论

  1. 你应该使用 in 运算符来检查子字符串是否存在于给定的字符串中,因为它是最快的
  2. str.find() 以及 str.index() 也可以使用,但不是最优的,因为它们时间性能表现不佳
作者: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

DelftStack.com 创始人。Jinku 在机器人和汽车行业工作了8多年。他在自动测试、远程测试及从耐久性测试中创建报告时磨练了自己的编程技能。他拥有电气/电子工程背景,但他也扩展了自己的兴趣到嵌入式电子、嵌入式编程以及前端和后端编程。

LinkedIn Facebook

相关文章 - Python String