Pythonで文字列を検索

pythonでは文字列を簡単に検索できます。早速やってみましょう。
まずはp1.pyというファイルを作成してみる。

#p1.py
moji = "abcdefg"
print ('c' in moji)

実行してみると「True」と表示される。
上記のmojiという変数には「abcdefg」が設定されているが、その中に「c」という文字があったということを表している。

$ /usr/bin/python3.5m p1.py 
True

例えば下記のようにしてみる。

#p1.py
moji = "abcdefg"
print ('z' in moji)

検索してみよう。同様にスクリプトを実行すると「False」が返ってくる。
つまりmojiという変数には「abcdefg」が設定されているが、その中に「z」と文字はありませんという意味になります。

$ /usr/bin/python3.5m p1.py 
True

文字の位置を検索してみよう

上記では文字列に特定の文字が「含まれている」「含まれていない」は判定できますが、「どの位置にあるか」はわかりません。
そこで利用するのがfindです。

#p1.py
moji = "abcdefg"
print (moji.find('c'))

上記のようにしてスクリプトを実行すると以下のような結果になります。
以下では「2」と表示されますが、これはmojiという変数には「abcdefg」が設定されているが、その中に「c」という文字が最初に現れるのが「3文字目(1文字目は0として表示されるので、0,1,2で3文字目)」となります。

$ /usr/bin/python3.5m p1.py 
2

同様に以下のように検索する文字列を「z」としてみます。

#p1.py
moji = "abcdefg"
print (moji.find('z'))

スクリプトを実行すると変数mojiには「z」が含まれていないので、「-1」を返します。

$ /usr/bin/python3.5m p1.py 
-1

上記では文字列の「左端から検索して最初に見つかった位置」を返しますが、特定の位置以降から検索させることも可能です。
以下のようにすると5文字目「e」以降から検索して、最初に「c」がある位置を検索しますので「9」を返すことになります。

moji = "abcdefgabcdefgabcdefg"

print (moji.find('c',4))