🟩 Python find() と index() の違い|文字列の位置を検索する方法【初心者向け】

Python

📚 Python学習ロードマップ
(初心者→ログ設計まで体系的に学べます)
https://run-ride-code.com/python-selfstudy-roadmap/


はじめに

Pythonで文字列を扱うとき、

  • 特定の文字を探す
  • 単語の位置を調べる

といった処理が必要になることがあります。

そのときに使われるのが

  • find()
  • index()

という2つのメソッドです。

どちらも 文字列の位置を検索する機能ですが、
実際に使ってみると 動きに大きな違いがあります。

この記事では

  • find() と index() の違い
  • 見つからない場合の挙動
  • 複数回出現する文字の検索
  • 例外処理の使い方

を解説します。

find() の使い方

find()文字列の位置を検索するメソッドです。

サンプルコード

text = "abcde"
print(text.find("c"))

実行結果

2

文字 c2番目の位置にあるため 2 が返ります。


見つからない場合の動き

find() の特徴は
見つからない場合に -1 を返すことです。

text = "abcde"
print(text.find("x"))

実行結果

-1

そのため、エラーにならず 安全に検索できます。


index() の使い方

index() も文字列の位置を検索するメソッドです。

text = "abcde"
print(text.index("c"))

実行結果

2

ここまでは find() と同じ動きです。


index() の注意点

index()見つからない場合にエラーになります。

text = "abcde"
print(text.index("x"))

結果

ValueError

そのため index() を使う場合は
例外処理が必要になることがあります。


2回目以降の検索方法

find() は最初の一致しか返しません。

複数回登場する場合は
検索開始位置を指定します。

text = "あいううえおうあい"first = text.find("う")
second = text.find("う", first + 1)print(second)

実行結果

3

すべての位置を取得する方法

複数回登場する文字をすべて取得する場合は
whilefind() を組み合わせます。

text = "banana"pos = text.find("na")while pos != -1:
print(pos)
pos = text.find("na", pos + 1)

実行結果

1
3

この方法は

  • 文章検索
  • ログ分析
  • テキスト処理

などでよく使われるテクニックです。


index() を安全に使う方法

index() を使う場合は
例外処理を組み合わせます。

text = "abcdefg"try:
pos = text.index("x")
print(pos)
except ValueError:
print("xは見つかりませんでした")

実行結果

xは見つかりませんでした

find() と index() の違い

メソッド見つからない場合
find()-1 を返す
index()ValueError が発生

今日の学習まとめ

今回のポイント

  • find() は見つからないと -1 を返す
  • index() は見つからないとエラーになる
  • 2回目以降の検索は 検索開始位置を指定する
  • 複数検索には while find() が便利

文字列検索は Pythonのテキスト処理の基本です。


📚 Python学習ロードマップ
(初心者→ログ設計まで体系的に学べます)
https://run-ride-code.com/python-selfstudy-roadmap/

コメント

タイトルとURLをコピーしました