[Python] 字串索引方法:比較 str.find() 與 str.index()

在Python中,與字串的操作是基礎性的,而找出特定字符或子字串的索引常常是必要的。本文將探討兩個關鍵方法的使用,以達到此一目的:str.find()str.index()。我們將探討這些方法的運作方式,並辨認其間的差異。

使用 str.find() 方法

str.find() 方法會回傳指定值首次出現的起始索引。若未找到值,則會回傳 -1。

python
text = "Python is wonderful"
index = text.find("is")
print(index) # Output: 7

在這裡,str.find() 方法回傳 2,即子字串 "是" 起始的索引。

使用 str.index() 方法

str.index() 方法與 str.find() 相似,但若未找到值,會引發異常。

python
text = "Python is wonderful"
index = text.index("is")
print(index) # 輸出:7

# 引發 ValueError
try:
    index = text.index("Java")
except ValueError:
    print("Value not found")

str.find()str.index() 之間的差異

主要的差異在於當未找到值時的處理方式:

  • str.find():回傳 -1
  • str.index():引發異常

範例:使用 str.find()str.index() 在特定範圍內搜尋

兩個方法都允許您指定起始和結束位置,在特定範圍內進行搜尋。

python
text = "Python is wonderful, Python is great"

# 使用 find
find_index = text.find("Python", 25, 30)
print(find_index) # 輸出:-1

# 使用帶有例外處理的 index
try:
    index_index = text.index("Python", 25, 30)
except ValueError:
    index_index = -1

print(index_index) # 輸出:-1

此範例示範如何使用這兩種方法將搜尋限制在特定範圍內,並使用 str.index() 處理異常。


透過 Python 的 str.find()str.index() 方法,我們能夠直觀地了解如何在字串中找到字元或子字串的位置。它們能夠有效地在字串內進行搜尋,其行為會依據值是否被找到而有所不同。


常見問題

  1. str.find()str.index() 主要的差異是什麼? 主要差異在於當值未被找到時的處理方式;str.find() 會回傳 -1,str.index() 會引發異常。
  2. 我能在字串中指定特定範圍進行搜尋嗎? 是的,這兩種方法都可以。
  3. 這兩種方法之間有性能差異嗎? 一般而言,在標準使用情境下並無明顯的差異。
  4. 這些方法可以用於包含字串的變數嗎? 是的,您可以將這些方法應用於任何包含字串的變數上。
  5. 若我試圖搜尋不在字串中的值會發生什麼? str.find() 會回傳 -1,而 str.index() 會引發 ValueError 異常。
© Copyright 2023 CLONE CODING