在 Python 字串中查詢字元的所有索引

Muhammad Maisam Abbas 2023年1月30日 2022年5月17日
  1. 在 Python 中使用正規表示式查詢字串中字元的所有索引
  2. 在 Python 中使用 yield 關鍵字查詢字串中字元的所有索引
  3. 在 Python 中使用列表推導式查詢字串中字元的所有索引
在 Python 字串中查詢字元的所有索引

本教程將討論在 Python 中獲取字串中字元的所有索引的方法。

在 Python 中使用正規表示式查詢字串中字元的所有索引

我們可以在 Python 的 re 模組中使用 finditer() 函式 來解決我們的特定問題。finditer() 函式將模式和字串作為輸入引數。它從左到右讀取字串並返回模式出現的所有索引。我們可以將此函式與列表推導一起使用,以將結果儲存在 Python 中的列表中。以下程式碼片段向我們展示瞭如何使用正規表示式查詢字串中字元的所有索引。

import re
string = "This is a string"
char = "i"
indices = [i.start() for i in re.finditer(char, string)]
print(indices)

輸出:

[2, 5, 13]

我們使用 re.finditer() 函式遍歷 string 中的每個字元,並找到與 char 匹配的所有字元。我們以列表的形式返回與 char 匹配的所有字元的索引 i.start(),並將它們儲存在 indices 中。最後,我們顯示了 indices 的所有元素。

在 Python 中使用 yield 關鍵字查詢字串中字元的所有索引

我們還可以在函式中使用 yield 關鍵字來解決我們的特定問題。yield 關鍵字用於從函式返回多個值,而不會破壞該函式的區域性變數的狀態。再次呼叫該函式時,將從前一個 yield 語句開始執行。我們可以使用此關鍵字返回字串中某個字元的所有例項。以下程式碼示例向我們展示瞭如何使用 yield 關鍵字在字串中查詢字元的所有索引。

def find(string, char):
    for i, c in enumerate(string):
        if c == char:
            yield i

string = "This is a string"
char = "i"
indices = list(find(string, char))
print(indices)

輸出:

[2, 5, 13]

我們定義了 find(string, char) 函式,該函式遍歷 string 中的每個字元,如果該字元與 char 匹配,則生成索引 i。在呼叫 find() 函式時,我們將所有返回值儲存在一個列表中並顯示列表中的所有元素。

在 Python 中使用列表推導式查詢字串中字元的所有索引

我們還可以使用列表推導式來解決我們的問題。列表推導用於基於先前存在的列表建立新列表。我們可以使用列表推導來遍歷字串變數中的每個字元,如果該字元與所需字元匹配,則返回索引。列表推導式以列表的形式返回值。我們可以將這些索引值儲存在一個列表中並顯示結果。以下程式碼片段向我們展示瞭如何使用列表推導式查詢字串中某個字元的所有索引。

string = "This is a string"
char = "i"
indices = [i for i, c in enumerate(string) if c == char]
print(indices)

輸出:

[2, 5, 13]

我們使用列表推導式遍歷 string 變數中的每個字元 c,如果字元 c 等於我們想要的字元 char,則返回其索引 i。這是在字串中查詢字元的所有索引的最簡單和最簡單的方法。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

相關文章 - Python String