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

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ドキュメント から引用
例.部分文字列が見つかった場合
Pythons = '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
例.部分文字列が見つからなかった場合
Pythons = '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 でエラー発生時の例外処理をおこないます。
Pythons = 'This is a pen.' try: print(s.index('z')) except ValueError as e: print(e)
実行結果substringnot found
例.検索範囲の開始位置を指定する場合
Pythons = '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
例.検索範囲の開始・終了位置を指定する場合
Pythons = '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のスライスと同じように使えるね。
よろしければクリックしていただけると嬉しいです。
コメント