如何在 Python 中检查字符串是否包含子字符串
Jinku Hu
2023年10月10日
Python
Python String
我们经常需要检查给定的字符串是否包含特定的子字符串。我们将在此处列出一些方法,然后比较运行时间性能以选择最有效的方法。
我们将字符串- 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()也可以使用,但不是最优的,因为它们时间性能表现不佳
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: Jinku Hu
