スライドショー

【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で文字列を扱うには?文字列の基本操作を解説
更新日 : 2019年5月21日

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入門】正規表現の使い方を初心者向けに解説
更新日 : 2019年9月1日

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

なぜPythonを学ぶのか?

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

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

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

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

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

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

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

などが必要になります。

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

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

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

侍エンジニア塾では、

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

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

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

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

まとめ

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

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

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

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

侍テック編集部

侍テック編集部

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説