文字列操作

【Python】文字列操作:find()、index() 文字列の検索

嫁ちゃん
嫁ちゃん

指定した文字列が文字列内のどの位置(インデックス)にあるか知りたいんですけど?

わたし
わたし

str型の find() メソッドを使えば、文字列の位置がわかるよ!

はじめに

str型には find() や index() メソッドが用意されており、文字列中に指定した文字列がどの位置(インデックス)にあるか調べることができます。index() メソッドは、指定した文字列が見つからなかったとき、ValueError が送出します。

用法

str.find(sub[, start[, end]]))

文字列のスライス s[start:end] に部分文字列 sub が含まれる場合、その最小のインデックスを返します。オプション引数 start および end はスライス表記と同様に解釈されます。 sub が見つからなかった場合 -1 を返します。

組み込み型 – Pythonドキュメント から引用

str.index(sub[, start[, end]]))

find() と同様ですが、部分文字列が見つからなかったとき ValueError を送出します。

組み込み型 – Pythonドキュメント から引用

例.部分文字列が見つかった場合

Python
s = 'This is a pen.' print(s) print(s.find('i')) print(s.index('i'))

find()、index() メソッド共に同じ結果が表示されましたね。文字列の中には ‘i’ が2回出てきますが、はじめに見つかった位置(インデックス)を返します。インデックスの先頭は0です。

実行結果
This is a pen. 2 2 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | T | h | i | s | | i | s | | a | | p | e | n | . | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

例.部分文字列が見つからなかった場合

Python
s = 'This is a pen.' print(s) print(s.find('z')) print(s.index('z'))

部分文字列が見つからなかった場合、find() メソッドは -1 を返しますが、index() は ValueError を送出します。

実行結果
This is a pen. -1 ValueError: substringnot found

try except でエラー発生時の例外処理をおこないます。

Python
s = 'This is a pen.' try: print(s.index('z')) except ValueError as e: print(e)
実行結果
substringnot found

例.検索範囲の開始位置を指定する場合

Python
s = 'This is a pen.' print(s) print(s.find('i'), 3) print(s.index('i'), 3)

検索範囲の開始位置のインデックスが 3 になっていますので、2つ目の ‘i’ の位置である 5 を返します。

実行結果
This is a pen. 5 5 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | T | h | i | s | | i | s | | a | | p | e | n | . | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

例.検索範囲の開始・終了位置を指定する場合

Python
s = 'This is a pen.' print(s) print(s.find('pen'), 3, 13) print(s.index('pen'), 3, 13)

検索範囲の終了位置のインデックスに 13 を指定しました。0 から数えて 12番目 では、’n’ が含まれないことに注意が必要です。

実行結果
This is a pen. 10 10 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | T | h | i | s | | i | s | | a | | p | e | n | . | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

おわりに

嫁ちゃん
嫁ちゃん

部分文字列がどの位置(インデックス)にあるかわかりましたねー♪

わたし
わたし

開始位置、終了位置の指定の仕方は、Pythonのスライスと同じように使えるね。

この記事がお役に立てましたら幸いです。
人気ブログランキングに参加しております。
よろしければクリックしていただけると嬉しいです。
にほんブログ村 IT技術ブログ Pythonへ
※本サイトに掲載する情報には充分に注意を払っておりますが、その内容について保証するものではありません。
※本サイトの使用ならびに閲覧によって生じたいかなる損害にも責任を負いかねます。

コメント

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