如何在 Python 中检查字符串是否包含子字符串
Jinku Hu
2023年10月10日
我们经常需要检查给定的字符串是否包含特定的子字符串。我们将在此处列出一些方法,然后比较运行时间性能以选择最有效的方法。
我们将字符串- It is a given string
作为给定字符串,given
是要检查的子字符串。
in
操作符检查字符串是否包含子字符串
in
操作符是成员资格检查运算符。x in y
评估为 True
如果 x
是 y
的成员,或者换句话说,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
子字符串检查方法结论
- 你应该使用
in
运算符来检查子字符串是否存在于给定的字符串中,因为它是最快的 str.find()
以及str.index()
也可以使用,但不是最优的,因为它们时间性能表现不佳
作者: Jinku Hu