Pythonの文字列オブジェクトに用意されたメソッドのほとんどが、実は今回紹介する検索に関するメソッドだ。

文字列内に指定の文字列が含まれているか確認する

まずは、ある文字列の中に指定の文字列(部分文字列)が含まれているかを確認するメソッドをいくつか紹介しよう。

inを使用する方法

inを使用すると、検索結果を真偽値で得ることができる。

data = 'hoge,fuga,piyo,foo,bar'

'fuga' in data
# True

findメソッド

findメソッドは、指定した文字列が見つかった最初の位置を結果として返す。
この時、位置順は0から始まることに注意が必要だ。

data = 'hoge,fuga,piyo,foo,bar'

data.find('fuga')
# 5

指定の文字列が見つからなかった場合は-1を返す。

data = 'hoge,fuga,piyo,foo,bar'

data.find('abc')
# -1

関連するメソッドとしてrfindメソッドもあり、こちらは指定した部分文字列が最後に見つかった位置を返す。

data = 'hoge,fuga,piyo,foo,bar'

data.find('a')
# 8

data.rfind('a')
# 20

indexメソッド

indexメソッドは、findメソッドと同等の機能を持つが、見つからなかった場合は例外が発生する。

data = 'hoge,fuga,piyo,foo,bar'

data.index('abc')
# エラー発生
# ValueError: substring not found

その他の関連するメソッド

文字列が見つかった回数を返すcountメソッド

countメソッドは、指定した文字列が見つかった回数を返す。

data = 'hoge,fuga,piyo,foo,bar'

data.count('a')
# 2

文字列を置き換えるreplaceメソッド

replaceメソッドは、検索して見つかった文字列を任意の文字列に置き換えることのできるメソッドだ。

data = 'hoge,fuga,piyo,foo,bar'

data.replace(',', ':')
# 'hoge:fuga:piyo:foo:bar'

また、このreplaceメソッドは文字列の削除としての用途も持ち合わせており、メソッドの第二引数に空文字を指定することでそれを実現することができる。

data = 'hoge,fuga,piyo,foo,bar'

data.replace(',', '')
# 'hogefugapiyofoobar'