如何在 Python 中檢查一個字串是否包含另一個字串(子字串)?


子字串是指字串中連續的字元序列。換句話說,它是出現在較長文字中的一小段文字。

例如,在字串“lorem ipsum”中,子字串“lorem”出現在較長的字串中。同樣,子字串“em i”也出現在較長的字串“lorem ipsum”中。

子字串操作在程式設計中很常見,可用於各種任務,例如在文字中搜索特定單詞、提取文字的一部分或用其他單詞替換文字的某些部分。

在 Python 中檢查一個字串是否包含另一個字串(子字串)是一項常見任務,可以使用多種方法來完成。讓我們考慮下面一些最常用的方法,以及您可以自己嘗試的程式碼示例。

使用“in”運算子

檢查子字串是否包含在字串中最簡單的方法是使用 in 運算子。以下是操作方法

示例

在此程式碼中,我們定義了一個名為 string 的字串變數,其中包含文字“lorem ipsum”。我們還定義了一個名為 substring 的子字串變數,其中包含文字“ipsum”。

然後,我們使用 if 語句檢查子字串是否包含在字串中。in 運算子檢查 substring 是否為 string 的子字串,如果是則返回 True,否則返回 False。

如果在字串中找到子字串,我們將列印訊息“子字串已找到!”。否則,我們將列印訊息“子字串未找到”。

string = "lorem ipsum"

substring = "ipsum"
if substring in string:
    print("Substring found!")
else:
    print("Substring not found.")

輸出

Substring found!

使用 find() 方法

檢查子字串是否包含在字串中的另一種方法是使用 find() 方法。以下是一個示例

示例

在此程式碼中,我們定義瞭如上所示的 string 和 substring 變數。

然後,我們使用 string 變數的 find() 方法檢查子字串是否包含在字串中。find() 方法在字串中搜索子字串,並返回子字串首次出現的索引,如果未找到子字串則返回 -1。

我們使用 if 語句檢查 string.find(substring) 的結果是否不等於 -1。如果不等於 -1,則表示在字串中找到了子字串,因此我們列印訊息“子字串已找到!”。否則,我們將列印訊息“子字串未找到”。

string = "lorem ipsum"
substring = "dolor"
if string.find(substring) != -1:
    print("Substring found!")
else:
    print("Substring not found.")

輸出

Substring not found.

使用正則表示式

檢查子字串是否包含在字串中的另一種方法是使用正則表示式。

示例

在此程式碼中,我們首先匯入 re 模組,該模組為 Python 中的正則表示式提供支援。

然後,我們像以前一樣定義 string 和 substring 變數。

我們使用 re.search() 函式在字串中搜索子字串。re.search() 函式在字串中搜索與 substring 表示的正則表示式匹配的內容。

如果找到匹配項,則 re.search() 函式將返回一個匹配物件,在布林上下文中,該物件被視為 True。如果未找到匹配項,則該函式將返回 None,在布林上下文中,該物件被視為 False。

我們使用 if 語句檢查 re.search(substring, string) 的結果是否為 True。如果是,則表示在字串中找到了子字串,因此我們列印訊息“子字串已找到!”。否則,我們將列印訊息“子字串未找到”。

import re
string = "lorem ipsum"
substring = "ipsum"

if re.search(substring, string):
    print("Substring found!")
else:
    print("Substring not found.")

輸出

Substring found!

使用 startswith() 方法

檢查子字串是否包含在字串中的一種不同的方法是使用 startswith() 方法。

示例

在此程式碼中,我們像以前一樣定義 string 和 substring 變數。

我們使用 string 變數的 startswith() 方法檢查子字串是否位於字串的開頭。如果字串以子字串開頭,則 startswith() 方法返回 True,否則返回 False。

我們使用 if 語句檢查 string.startswith(substring) 的結果是否為 True。如果是,則表示在字串中找到了子字串,因此我們列印訊息“子字串已找到!”。否則,我們將列印訊息“子字串未找到”。

string = "lorem ipsum"
substring = "dolor"

if string.startswith(substring):
    print("Substring found!")
else:
    print("Substring not found.")

輸出

Substring not found.

使用列表推導式

檢查子字串是否包含在字串中的另一種方法是使用列表推導式。

示例

在此程式碼中,我們再次像以前一樣定義 string 和 substring 變數。

我們使用列表推導式將字串拆分為單個單詞,並檢查子字串是否包含在任何這些單詞中。string 變數的 split() 方法使用空格作為分隔符將字串拆分為單詞列表。然後,列表推導式檢查子字串是否包含在列表中每個單詞中。

我們使用 any() 函式檢查列表推導式返回的列表中的任何值是否為 True。如果列表中的至少一個值為 True,則 any() 函式返回 True,否則返回 False。

我們使用 if 語句檢查 any([substring in word for word in string.split()]) 的結果是否為 True。如果是,則表示在字串中找到了子字串,因此我們列印訊息“子字串已找到!”。否則,我們將列印訊息“子字串未找到”。

string = "lorem ipsum"
substring = "lorem"
if any([substring in word for word in string.split()]):
    print("Substring found!")
else:
    print("Substring not found.")

輸出

Substring found!

因此,這些是在 Python 中檢查子字串是否包含在字串中的一些不同方法!根據您的具體用例,一種方法可能比另一種方法更合適。但總的來說,'in' 運算子和 find() 方法是此任務中最常用的方法。

更新於: 2023年8月10日

398 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.