Pythonの文字列rindex()メソッドの使い方を徹底解説
このチュートリアルでは、Pythonの文字列メソッドrindex()について詳しく解説します。
rindex()は、指定した部分文字列(サブストリング)が文字列内で最後に出現する位置のインデックスを返すメソッドです。もし指定した部分文字列が文字列内に見つからない場合は、ValueError例外が発生します。
rindex()の基本的な使い方
# 文字列の初期化
string = 'Tutorialspoint is a great place to learn Python. Tutorialspoint is an Indian company'
# rindexで'Tutorialspoint'を検索
print(string.rindex('Tutorialspoint'))
# rindexで'is'を検索
print(string.rindex('is'))実行結果
上記のコードを実行すると、以下のような出力が得られます。
49 64
'Tutorialspoint'という単語は文字列内に2回登場しますが、rindex()はそのうち最後の出現位置である49を返しています。同様に、'is'も最後に出現した位置64が返される点に注目してください。
start引数とend引数による検索範囲の指定
rindex()には、start(開始位置)とend(終了位置)という2つのオプション引数を渡すこともできます。これらを指定すると、rindex()はstartからendの直前までの範囲内で部分文字列を検索します(endインデックス自体は範囲に含まれません)。
例
# 文字列の初期化
string = 'Tutorialspoint is a great place to learn Python. Tutorialspoint is an Indian company'
# 検索範囲0〜45で'Tutorialspoint'を検索
print(string.rindex('Tutorialspoint', 0, 45))
# 検索範囲0〜45で'is'を検索
print(string.rindex('is', 0, 45))実行結果
上記のコードを実行すると、以下のような出力が得られます。
0 15
検索範囲を0〜45に限定したため、最初の'Tutorialspoint'(位置0)と最初の'is'(位置15)が見つかっています。2つ目以降の出現位置は範囲外となるため、検索対象になりません。
部分文字列が見つからない場合の挙動
指定した部分文字列が文字列内に存在しない場合、rindex()はValueError例外を発生させます。実際に確認してみましょう。
例
# 文字列の初期化
string = 'Tutorialspoint is a great place to learn Python. Tutorialspoint is an Indian company'
# 小文字の'tutorialspoint'を検索
print(string.rindex('tutorialspoint'))実行結果
上記のプログラムを実行すると、以下のようなエラーが出力されます。
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-12-76c8ebf53c60> in <module>
3
4 # finding the 'Tutorialspoint' using rfind
----> 5 print(string.rindex('tutorialspoint'))
ValueError: substring not foundPythonでは大文字と小文字が厳密に区別されるため、'Tutorialspoint'ではなく'tutorialspoint'を検索すると、該当する部分文字列が存在せずValueErrorが発生します。実務ではtry-except文で例外を捕捉するか、事前にin演算子で存在チェックを行うのが安全です。
rindex()とrfind()の違い
なお、rindex()とよく似たメソッドにrfind()があります。両者とも部分文字列の最後の出現位置を返す点は同じですが、見つからなかった場合の挙動が異なります。rfind()は-1を返すのに対し、rindex()はValueError例外を発生させるのです。例外処理を活用したい場面ではrindex()を、シンプルに判定したい場面ではrfind()を使うなど、用途に応じて使い分けるとよいでしょう。
まとめ
このチュートリアルでは、Pythonの文字列メソッドrindex()の基本的な使い方、start・end引数による検索範囲の指定方法、そして部分文字列が見つからない場合の例外挙動について学びました。本チュートリアルについて不明な点がある場合は、コメント欄でお気軽にお知らせください。
-
Pythonで文字列を逆順に反転する方法|追加メモリ不要のインプレース手法
文字の配列が与えられたとき、追加のメモリ領域を使用せずに文字列を逆順に反転することを考えます。たとえば、入力が [H, E, L, L, O] である場合、期待される出力は [O, L, L, E, H] となります。 解法のアプローチ この問題は「Two Pointers(ツーポインタ)」と呼ばれる定番のテクニックで効率的に解けます。考え方はシンプルで、配列の両端から中央に向かって文字を交換していくだけです。 手順 2つのポインタを用意します:start = 0、end = 文字列の長さ - 1 s[start] と s[end] の文字を入れ替えます start を1つ増やし、end を
-
Pythonのcasefold()メソッドとは?文字列の小文字変換と比較方法を解説
Pythonのcasefold()は、文字列内の英字をすべて小文字に変換するためのメソッドです。lower()と似ていますが、より積極的な変換を行う点が特徴で、ドイツ語の「ß」が「ss」に変換されるなど、国際化対応において強力な働きをします。2つの文字列に対してcasefold()を適用すれば、大文字・小文字の違いを無視して値を一致させることができます。そのため、ユーザー入力の比較や検索処理などで非常に役立ちます。casefold()の基本的な使い方次の例では、文字列にcasefold()を適用し、すべて小文字に変換された結果を出力しています。コード例string = BestTutorial