Python で文字列内の文字を検索する

Manav Narula 2023年1月30日
  1. find() 関数を使用して、文字列内の文字の位置を検索する
  2. rfind() 関数を使用して、文字列内の文字の位置を検索する
  3. index() 関数を使用して、文字列内の文字の位置を検索する
  4. for ループを使用して、文字列内の文字の位置を検索する
Python で文字列内の文字を検索する

文字列は文字の集まりです。文字列内の各文字には、それにアクセスするために使用できる特定の位置があります。このチュートリアルでは、文字列内の文字の位置を見つける方法について説明します。

find() 関数を使用して、文字列内の文字の位置を検索する

find() 関数は、部分文字列の位置を返します。検索する開始位置と終了位置を指定することもできます(デフォルトでは、開始は 0 で、終了は文字列の長さです)。

次のコードでは、この関数を使用して、文字列内の文字の位置を検索します。

s = "python is fun"
c = "n"
print(s.find(c))

出力:

5

文字列で検出された文字の最初の位置を返すことに注意してください。この関数について覚えておくべきもう 1つのことは、指定された部分文字列が文字列に存在しない場合に-1 を返すことです。

rfind() 関数を使用して、文字列内の文字の位置を検索する

この関数は find() 関数に似ていますが、唯一の違いは、部分文字列の最後の位置を返すことです。

例えば、

s = "python is fun"
c = "n"
print(s.rfind(c))

出力:

12

index() 関数を使用して、文字列内の文字の位置を検索する

index() 関数は、find() 関数と同様に使用され、文字列内の文字の位置を返します。find() 関数と同様に、文字列内で最初に出現する文字も返します。

例えば、

s = "python is fun"
c = "n"
print(s.index(c))

出力:

5

index() 関数と find() 関数の違いは、必要な文字が文字列にない場合、index() 関数が ValueError を返すことです。

for ループを使用して、文字列内の文字の位置を検索する

このメソッドでは、文字列内の文字のすべての出現を記録できます。文字列を繰り返し処理し、各文字を個別に比較します。一致が見つかったすべての位置が示され、異なる変数に格納されます。

次のコードは、このロジックを実装しています。

s = "python is fun"
c = "n"
lst = []
for pos, char in enumerate(s):
    if char == c:
        lst.append(pos)
print(lst)

出力:

[5, 12]

enumerate() 関数を使用するのは、反復が容易になり、文字列のすべての文字にカウンター変数が割り当てられるためです。

このメソッドは、リスト内包法を使用して実装することもできます。これは、より高速でクリーンであると考えられています。

例えば、

s = "python is fun"
c = "n"
print([pos for pos, char in enumerate(s) if char == c])

出力:

[5, 12]
著者: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

関連記事 - Python String