Pythonの「文字列に○○が含まれているか」の判定について気になったこと - print ”laco’s blog”

Pythonの「文字列に○○が含まれているか」の判定について気になったこと

Pythonである文字列にある文字列が含まれているかどうかを調べる際に気になったことをメモ
とりあえず3つ方法があったのでまとめます。
まず一つ目、find関数を使う場合


if 'hogehoge'.find('fuga') > -1:

find

関数

文字列

の先頭から指定

文字列

を探し、見つかったらその

文字列

の最初の

インデックス

、見つからなければ-1を返す

関数

後ろから探したい場合はrfind

関数

を使うといい

次にindex関数



try:
index = 'hogehoge'.index('fuga')
expect:
index = -1

index

関数

文字列

の先頭から指定

文字列

を探し、見つかったらその

文字列

の最初の

インデックス

を返し、見つからなければ例外を吐く

関数

後ろから探したい場合はこちらもrindexを使えば良い

そして最後がcount関数



if 'hogehoge'.count('fuga'):

どうでしょう、今までの2つと比べてすっきりしてる感じ。

count

関数

文字列

の中に指定した

文字列

がいくつ含まれているかを返す

関数

御存知の通り

Python

では0は偽なのでこれは

Java

のcontainsのような真偽値を返す

関数

と全く同じように使えます。

というわけで私のコードでは積極的にcount

関数

で判定しています。

ところでPythonの思想的には3通りも方法があるのはどうかと思うのですがそこのところどうなんでしょうか?

[追記]


関数

を使わずにin

ステートメント

でも解決できるようです。



if 'fuga' in 'hogehoge':

一番わかりやすくすっきりしてるのがこれですかね

ということで4つ方法が見つかったわけですがやっぱりPython的にどうなのこれは…