Hatena::ブログ(Diary)

print ”laco’s blog”

2012-10-22

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的にどうなのこれは…

blueblue 2012/10/22 22:11 Try this:

'fuga' in 'hogehoge'

laco0416laco0416 2012/10/23 01:23 in って文字列にも使えたんですか…
ありがとうございます Thank you.

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/laco0416/20121022/1350907756