【Python】find()で指定した文字列の位置を取得する!
Pythonのfind()を使用すると、指定した文字列の位置を取得することができます。
find()とは文字列内に指定した文字列のインデックスを取得するメソッドとであり、インデックスは「0」からスタートするようになります。
find()にはパラメータを2つ指定することができ、1つ目は検索したい文字列を、2つ目は検索の開始位置を指定します。
そして、検索したい文字列が見つかった場合は文字列の左端からのインデックスを返し、検索したい文字列が見つからかった場合は「-1」を返すようになります。
また、rfind()を使用することで指定した文字列の位置を右端から検索して、その文字列を左端からのインデックスで取得することができます。
今回はPythonのfind()で指定した文字列の位置を取得する方法について以下の内容で解説していきます。
⚫︎ 検索開始を先頭に設定して位置を取得する場合
⚫︎ 検索開始の位置を設定して文字列の位置を取得する場合
⚫︎ 検索開始の位置と終了位置を設定して文字列の位置を取得する場合
⚫︎ 指定した文字が文字列に含まれていない場合
⚫︎ rfind()で指定した文字列の位置を取得する方法
⚫︎ in演算子で指定した文字列を検索する方法
目次
find()とは
find()とは、文字列内に指定した文字列のインデックスを取得するメソッドとなります。
インデックスは「0」からスタートし、指定した文字列が含まれない場合は「-1」を返すようになります。
find()の書き方
find()の書き方は下記となります。
1 |
文字列.find(検索する文字列 [,検索の開始位置] [, 検索の開始位置]) |
find()のパラメータ
⚫︎ 検索する文字列:
文字列の中から検索したい文字列を指定する
⚫︎ 検索の開始位置:
文字列の検索開始位置をインデックスで指定する
⚫︎ 検索の終了位置:
文字列の検索開始位置をインデックスで指定する
find()のパラメータに検索する文字列を指定することで、文字列から検索する文字列に位置をインデックスで返します。
さらに、find()のパラメータに検索の開始位置や検索の終了位置を指定することで、検索の開始位置や終了位置指定して検索した文字列の位置をインデックスで返します。
指定した文字列の位置を取得するサンプルコード
任意の文字列の位置を取得するサンプルコードを紹介します。
検索開始を先頭に設定して位置を取得する場合
検索開始を先頭に設定して位置を取得する場合はfind()のパラメータに検索する文字列のみ指定します。
例
1 2 3 4 5 6 7 |
print('・「検索」の文字列の位置を取得する') text = 'ここの文字列から検索した文字列の位置を取得' print(text) text_find = text.find('検索') print('「検索」の位置は', text_find) |
出力結果
・「検索」の文字列の位置を取得する
ここの文字列から検索した文字列の位置を取得
「検索」の位置は 8
find()のパラメータに検索する文字列を指定することによって、検索開始を先頭に設定して文字列の位置を取得しています。
その為、「検索」の位置である「8」が返されています。
検索開始の位置を設定して文字列の位置を取得する場合
検索開始の位置を設定して文字列の位置を取得する場合はfind()のパラメータに検索の開始位置を指定します。
例
1 2 3 4 5 6 7 |
print('・「文字列」の文字列の位置を取得する') text = 'ここの文字列から検索した文字列の位置を取得' print(text) text_find = text.find('文字列', 6) print('「文字列」の位置は', text_find) |
出力結果
・「文字列」の文字列の位置を取得する
ここの文字列から検索した文字列の位置を取得
「文字列」の位置は 12
find()のパラメータに検索の開始位置を指定することによって、検索開始の位置を設定して文字列の位置を取得しています。
その為、「文字列」の位置は6から検索するので二つ目の「文字列」がある「12」が返されています。
検索開始の位置と終了位置を設定して文字列の位置を取得する場合
検索開始の位置と終了位置を設定して文字列の位置を取得する場合はfind()のパラメータに検索の開始位置と検索の終了位置を指定します。
例
1 2 3 4 5 6 7 8 9 10 |
print('・「文字列」の文字列の位置を取得する') text = 'ここの文字列から検索した文字列の位置を取得' print(text) text_find = text.find('文字列', 6, 18) print('「文字列」の位置は', text_find) text_find = text.find('文字列', 6, 10) print('「文字列」の位置は', text_find) |
出力結果
・「文字列」の文字列の位置を取得する
ここの文字列から検索した文字列の位置を取得
「文字列」の位置は 12
「文字列」の位置は -1
find()のパラメータに検索の開始位置と検索の終了位置を指定することによって、検索開始の位置と終了位置を設定して文字列の位置を取得しています。
その為、「文字列」の位置は6から検索し、18で終了するので二つ目の「文字列」がある「12」が返され、文字列」の位置は6から検索し、10で終了するので「文字列」は見つからず「-1」が返されます。
検索した文字列が含まれていない場合
検索した文字列が含まれていない場合は「-1」を返すようになります。
例
1 2 3 4 5 6 7 8 9 |
print('・「文字列」の文字列の位置を取得する') text = 'ここの文字列から検索した文字列の位置を取得' print(text) text_find1 = text.find('光') text_find2 = text.find('光', 5) print('「光」の位置は', text_find1) print('「光」の位置は', text_find2) |
出力結果
・「文字列」の文字列の位置を取得する
ここの文字列から検索した文字列の位置を取得
「光」の位置は -1
「光」の位置は -1
検索した文字列が含まれていないのでfind()は「-1」を返しています。
rfind()で指定した文字列の位置を取得する方法
find()の他にもrfind()というメソッドでも指定した文字列の位置を取得することができます。
rfind()はfind()とほとんど同じメソッドですが、文字列の右端から検索し、左端から数えたインデックスを返します。
例
1 2 3 4 5 6 7 8 |
print('・rfind()で文字列の位置を取得する') text = 'ここの文字列から検索した文字列の位置を取得' print(text) text_find1 = text.rfind('文字列') text_find2 = text.rfind('検索') print('「文字列」の位置は', text_find1) print('「検索」の位置は', text_find2) |
出力結果
・rfind()で文字列の位置を取得する
ここの文字列から検索した文字列の位置を取得
「文字列」の位置は 12
「検索」の位置は 8
rfind()で文字列の右端から指定した文字列を検索し、左端から数えたインデックスで返しています。
その為、「文字列」の位置は「12」で「検索」の位置は「8」が表示されています。
in演算子で指定した文字列を検索する方法
in演算子を使用することでも指定した文字列を検索することができます。
しかし、in演算子はfind()やrfind()と比べてインデックスを返すのではなく、「True」や「False」の真偽値を返します。
もし、in演算子について詳しく知りたい場合はこちらをご参考ください。
例
1 2 3 4 5 6 7 8 |
print('・in演算子で文字列に指定した文字列を検索する') text = 'ここの文字列から検索した文字列の位置を取得' print(text) text_in1 = '文字列' in text text_in2 = '光' in text print('「文字列」が含まれているか', text_in1) print('「光」が含まれているか', text_in2) |
出力結果
・in演算子で文字列に指定した文字列を検索する
ここの文字列から検索した文字列の位置を取得
「文字列」が含まれているか True
「光」が含まれているか False
in演算子によって指定した文字列が含まれているかどうかを検索しています。
今回のポイント
find()で文字列の位置を取得
Pythonで任意の文字列の位置を取得するにはfind()を使用する。
⚫︎ find()のパラメータには検索したい文字列と検索の開始位置と検索の終了位置の3つを指定する
⚫︎ 指定した文字が文字列に含まれている場合は左端を0から数えたインデックスで返す
⚫︎ 指定した文字が文字列に含まれていない場合は-1を返す
⚫︎ find()だけでなく、rfind()でも指定した文字列の位置を取得することができる
(rfnd()は文字列の右端から検索し、左端から数えたインデックスを返す)
⚫︎ in演算子で指定した文字列を検索することができる
(TrueやFalseの真偽値を返す)
関連記事
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。