Python 文字列内の文字のすべてのインデックスを検索する
- Python で正規表現を使用して文字列内の文字のすべてのインデックスを検索する
-
Python で
yieldキーワードを使用して文字列内の文字のすべてのインデックスを検索する - 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() をリストの形式で返し、それらをインデックス内に格納しました。最後に、インデックスのすべての要素を表示しました。
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]
string 内の各文字を反復処理し、文字が char と一致する場合にインデックス i を生成する find(string, char) 関数を定義しました。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 を返しました。これは、文字列内の文字のすべてのインデックスを見つけるための最も簡単で簡単な方法です。
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