HOWTO · Python
在 Python 中檢查字串是否包含單詞
if/in 語句可用於檢查指定的單詞是否在 Python 中的字串變數中。
本頁內容
若要檢查文字是否出現在 Python 字串中,請使用 in 運算子。它會回傳布林值,且區分大小寫。
在 Python 中使用 if/in 陳述式檢查字串是否包含單字
若只需檢查子字串是否存在,可直接在 if 條件中使用 in。它會回傳布林值,而且比對時會區分大小寫。
text = "This contains a word"
if "word" in text:
print("Found")
else:
print("Not Found")
此運算子會檢查字元序列是否出現在字串中的任何位置,不要求符合完整單字:"is" in "This" 會得到 true,因為 is 這些字元出現在 This 的結尾。如果你的目標是找出獨立單字,這種比對方式可能會產生誤判。
若文字中的單字只以一般空格分隔,可以在字串兩端加上空格,再搜尋前後帶空格的詞作為簡易替代方法:" is " in (" " + text + " ")。但這種方法無法一致地處理標點符號、定位字元、換行或其他分隔符。若這些分隔符也很重要,請使用含有邊界的模式,或先將文字切分成詞。
在 Python 中使用 find() 方法檢查字串是否包含單字
find() 也會搜尋子字串,並回傳它第一次出現的起始索引。找不到指定文字時,它會回傳 -1。請明確比較結果是否為 -1,不要直接把索引當成條件。索引 0 會被視為假值,而 -1 會被視為真值。
text = "word appears here"
position = text.find("word")
if position != -1:
print("Found at index", position)
else:
print("Not Found")
這樣才能正確辨識從字串開頭就出現的比對結果。和 in 一樣,find() 執行的是子字串比對,不是完整單字比對。若除了確認文字是否存在,也需要知道它的位置,就適合使用這個方法。
在 Python 中使用正規表示式檢查字串是否包含單字
當搜尋需要符合某種模式時,例如要求詞語兩側都有單字邊界,可以使用 re.search()。在正規表示式中,\b 表示單字字元與非單字字元之間的轉換位置。
import re
text = "This contains a word."
if re.search(r"\bword\b", text):
print("Found")
else:
print("Not Found")
原始字串模式 r"\bword\b" 會依照 Python 的 \w 規則,將 word 比對為獨立的正規表示式單字。這些規則未必符合每個應用程式對「單字」的定義,尤其是使用特殊分詞方式或語言專屬邊界時。若只是檢查一般子字串,使用 in 會更簡單。
在 Python 中使用 index() 方法與例外處理檢查字串是否包含單字
index() 和 find() 一樣會回傳第一個符合項目的索引,但找不到子字串時,它會引發 ValueError,而不是回傳 -1。若預期可能找不到文字,而且找到時需要取得索引,請處理這個例外。
text = "This contains a word"
try:
position = text.index("word")
print("Found at index", position)
except ValueError:
print("Not Found")
try 區塊會處理成功找到文字的情況;except ValueError 區塊則會處理找不到子字串的情況。如果你只需要布林值,使用 in 能更直接地表達這個意圖。
結論
一般要確認子字串是否存在時,請使用 in;並記得它會區分大小寫,也可能比對到較長單字中的字元。若正規表示式對單字的定義適用於你的文字,可使用考量邊界的 re.search() 模式。需要索引,並希望找不到時取得 -1,可選擇 find();若希望透過 ValueError 處理找不到比對項目的情況,則可使用 index()。