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