查找字串中某個子字串第n 次出現
識別某個子字串第n 次出現對應的索引為各種程式場景中經常出現的任務。在Python中,沒有專門為此目的而設計的內建函數。但是,可以採用多種方法來實現此結果。
一種簡單的方法是使用循環來迭代字串併計算子字串的出現次數。起始索引被初始化為第一次出現的結果,循環繼續直到找到第n次出現。
def find_nth_occurrence(haystack, needle, n):
index = haystack.find(needle)
while index >= 0 and n > 1:
index = haystack.find(needle, index len(needle))
n -= 1
return index
這種方法高效且易於理解,但需要多次遍歷字串,對於大字串來說可能很耗時。
另一種更Pythonic的方法是使用正規表示式。正規表示式提供了一種強大而簡潔的方式來搜尋和操作字串。以下函數使用 re.findall() 方法來尋找所有出現的子字串,然後擷取第 n 個索引:
import re
def find_nth_occurrence_regex(haystack, needle, n):
occurrences = re.findall(needle, haystack)
if len(occurrences) >= n:
return haystack.index(occurrences[n - 1])
else:
return -1
此方法比大字串的迭代方法更快,但它需要導入額外的模組(re)。此外,對於某些用戶來說,它可能比迭代方法的可讀性差。
迭代方法和正規表示式方法之間的選擇最終取決於手頭任務的特定要求。對於小字串,迭代方法可能就足夠了,而對於大字串,正規表示式方法可能會提供更好的效能。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3