如何在 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