【Python入門】文字列の検索(find、in、re.findall)

この記事ではPythonで文字列を検索する方法について、解説をしていきます。文字列を扱う上で、

文字列の中に指定した文字列が存在するか確認したい一致した文字列を抽出したい

などの操作をしたいことがよくあります。この記事では、

  • 【基礎】文字列とは
  • 【実践】findメソッドの使い方
  • 【実践】in演算子の使い方
  • 【実践】re.findall関数の使い方

について、解説をしていきます。文字列の検索はPythonでは基本的かつ重要な操作で、覚えておいて損はありませんよ。

※ この記事のコードはPython 3.7で動作確認しました。

Pythonの文字列検索

Pythonでは文字列を操作するさまざまなメソッドが用意されています。そもそも文字列は、Pythonで文字の列を表現するための型になります。文字列型は、

"Python"

'Python'

# 改行を含む文字列
"""Python
Python"""

'''Python
Python

Python'''

のようにダブルクォーテーションやシングルクォーテーションで囲われます。文字列型についての詳しい解説は、こちらの記事をご覧ください。

Pythonの文字列の使い方とは?基本を解説【初心者向け】
更新日 : 2020年6月12日

findの使い方

それでは早速、文字列を検索する方法について見ていきましょう。ここでは、findメソッドとrfindメソッドについてを見ていきます。

findメソッド

findメソッドは文字列型のメソッドで、基本的な文字列の検索方法になります。findメソッドはこのように使います。

st = "Hello, Python and Perl and Ruby and more."
fd = st.find('Python')
print(fd)

実行結果

7

「7」という数字が返されましたがこれは何を意味するのでしょうか。これは、findメソッドの引数に渡した文字列が、検索対象の文字列の中にある場合のインデックスを表しています。

「7」という数字が返されたので、検索対象の変数stの、インデックスで7番目に「Python」という文字が見つかったことが分かります。これがPythonの基本的な文字列の検索方法になります。

また、次のコードのように検索した文字列が検索対象の文字列にない場合は、「-1」を返します。

st = "Hello, Python and Perl and Ruby and more."
fd = st.find('Haskell')
print(fd)

実行結果

-1

rfindメソッド

文字列型にはrfindメソッドというメソッドもあります。先程のfindメソッドは先頭から文字列を検索していました。

しかしこれは、末尾(right)から文字列を検索していくメソッドです。こちらのコードをご覧ください。

st = "Hello, Python and Perl and Ruby and more."
fdl = st.find('o')
fdr= st.rfind('o')
print(fdl)
print(fdr)

実行結果

4 # st.find
37 # st.rfind

findメソッドとrfindメソッドで同じ文字である「o」を検索しました。使うメソッドによって結果も変わってくることがわかって頂けたと思います。

in演算子の使い方

in演算子は、検索したい文字列が、検索対象の文字列に含まれているかどうかを調べることが出来る演算子になります。先程のfindメソッド、rfindメソッドでは実行するとインデックスが返ってきていました。

このin演算子はただ、その文字列が含まれているかどうかだけを調べることが出来ます。こちらのコードをご覧ください。

st = "Hello, Python and Perl and Ruby and more."
print('Python' in st)

実行結果

True

stという変数に含まれている文字列の中に、「Python」が含まれているかどうかを調べています。ここではstという変数の中に「Python」という文字列が含まれていたので、Trueを返しました。

注意点として、in演算子の右側と左側を逆にするとFalseが表示されてしまうので気をつけましょう。あくまでも検索方法は、

検索したい文字列 in 検索対象の文字列

になります。

re.findallの使い方

ここからは、re.findall関数の使い方について見ていきましょう。この関数はreモジュールという、正規表現(regex)を扱うための機能をimportする必要があります。

re.findall関数は検索対象の文字列の先頭から最後までを検索し、指定した正規表現に一致した文字列全てを取得してリストで返します。

詳しい使い方はこちらの記事で、正規表現の使い方とあわせてご覧ください。

【Python入門】正規表現の使い方を初心者向けに解説
更新日 : 2020年5月21日

このままPythonを学び続けて大丈夫?

なぜPythonを学ぶのか?

あなたがPythonを学ぶ理由は何でしょうか?

  • Pythonが人気だからとりあえず学んでいる
  • AIや機械学習の分野に興味があるから

Pythonは初心者向けの言語と言われています。その理由としてシンプルでわかりやすい構文や、実用的なライブラリが豊富なことが挙げられ、実際に学びやすい言語です。

しかし、もしあなたが機械学習に興味があって、とくに知識も無いまま学習を進めると、挫折する可能性が高いと言えます。

機械学習の分野はプログラミング以外にも、専門的な知識や数学の知識も必要になります。ただなんとなく学習していると早い段階でつまづきやすく、そのまま挫折してしまうなんてことも…。

そのため、挫折しないためには、

  • 最適な学習環境を用意する
  • 必要なライブラリ・ツールを導入する
  • わからないことを質問できるメンターを見つける

などが必要になります。

効率よく学びたいなら、無料体験レッスンがおすすめ

このままPythonを学び続けていいのかな…
まだまだ知りたいことがたくさんある!
もっと詳しくPythonについて知りたい!

といった悩みや願望を持っている方は、弊社「侍エンジニア塾」をご利用下さい。

侍エンジニア塾では、

  • 現役エンジニアによるマンツーマンレッスン
  • キャリアアドバイザーによる転職・就職支援
  • 業界屈指のフリーランス・起業サポート

を受けることができます。

業界屈指のコンサルタントから、効率的な学習方法や仕事獲得術、今後のキャリアまでさまざまな疑問を相談してみませんか?遠方の方でもオンラインで受講できます!お気軽に受講下さい。

侍エンジニア塾
無料体験レッスンを受ける

まとめ

今回は文字列型の検索方法について、

  • findメソッドの使い方
  • in演算子の使い方
  • re.findall関数の使い方

について解説しました。検索と聞くと難しく感じてしまう方も多いですが、やってみれば簡単で、なおかつ強力な武器になる知識でもあります。これらのfindメソッドやin演算子、re.findall関数について忘れてしまったら、ぜひこの記事を読み返してみてください。

LINEで送る
Pocket

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

侍テック編集部

侍テック編集部