Pythonで文字列を検索(find, rfind, index, rindex)
この記事では、Pythonの文字列検索メソッドであるfind(), rfind(), index(), rindex()について、それぞれの機能、違い、使用方法をサンプルコード付きで解説します。
目次
find()メソッド
find()メソッドは、文字列の中に特定の文字列または部分文字列が存在するかどうかを検索し、見つかった場合、その最初の出現位置のインデックスを返します。見つからない場合は-1を返します。
text = "Python is fun. Python is great."
index = text.find("Python")
print(index) # 出力: 0
index = text.find("Java")
print(index) # 出力: -1
第2引数と第3引数を使用することで、検索範囲を指定できます。
text = "Python is fun. Python is great."
index = text.find("Python", 10)
print(index) # 出力: 16
rfind()メソッド
rfind()メソッドは、find()メソッドと同様に文字列を検索しますが、文字列の最後から検索を開始します。見つかった場合、その最後の出現位置のインデックスを返します。見つからない場合は-1を返します。
text = "Python is fun. Python is great."
index = text.rfind("Python")
print(index) # 出力: 16
index()メソッド
index()メソッドは、find()メソッドとほぼ同じように動作しますが、検索対象の文字列が見つからない場合、ValueError例外が発生します。
text = "Python is fun. Python is great."
index = text.index("Python")
print(index) # 出力: 0
try:
index = text.index("Java")
print(index)
except ValueError:
print("ValueError: 文字列が見つかりません")
第2引数と第3引数を使用することで、検索範囲を指定できます。
rindex()メソッド
rindex()メソッドは、index()メソッドと同様に文字列を検索しますが、文字列の最後から検索を開始します。検索対象の文字列が見つからない場合、ValueError例外が発生します。
text = "Python is fun. Python is great."
index = text.rindex("Python")
print(index) # 出力: 16
try:
index = text.rindex("Java")
print(index)
except ValueError:
print("ValueError: 文字列が見つかりません")
メソッド間の比較
これらのメソッドの違いは、検索方向と例外処理です。find()とrfind()は、文字列が見つからない場合に-1を返し、index()とrindex()は見つからない場合にValueError例外を発生させます。検索方向は、find()とindex()が先頭から、rfind()とrindex()が末尾からです。
例外処理
index()とrindex()を使用する際は、ValueError例外を適切に処理する必要があります。try-exceptブロックを使用して例外をキャッチし、プログラムがクラッシュしないようにしましょう。
text = "Python is fun."
try:
index = text.index("Java")
print(index)
except ValueError as e:
print(f"エラーが発生しました: {e}")
関連記事
- Pythonで文字列を分割(split, rsplit, splitlines)
- Pythonで文字列を中央寄せ・左寄せ・右寄せ(center, ljust, rjust)
- Pythonで文字列を置換(replace, translate, re.sub)
- Pythonで文字列の大文字・小文字を変換(upper, lower, capitalize, title, swapcase)
- Pythonで文字列の先頭・末尾の空白を削除(strip, lstrip, rstrip)
- Pythonで文字列の先頭と末尾が特定の文字列か判定(startswith, endswith)
- Pythonで文字列をフォーマット(format, f文字列 (Python 3.6以降), %演算子)
- Pythonで文字列の出現回数をカウント(count)
- Pythonで文字列をスライスで部分抽出
- Pythonで文字列を結合(join, +演算子)