【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'''

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

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

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

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

なぜPythonを学ぶのか?

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

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

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

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

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

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

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

などが必要になります。

効率よく学びたいなら、無料カウンセリングがおすすめ

このままPythonを学び続けていいのかな…
まだまだ知りたいことがたくさんある!
もっと詳しくPythonについて知りたい!
といった悩みや願望を持っている方は、弊社「侍エンジニア」をご利用下さい。

侍エンジニアでは、

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

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

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

侍エンジニア
無料カウンセリングを受ける

まとめ

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

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

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

\業界最安級/
月額2,980円のプログラミングスクール

✔ 業界最安値の月定額2,980円
✔ 「Q&A掲示板」で平均30分以内に回答がもらえる
✔ 月に一度の「オンライン相談」で悩みを解決
✔ 教材の数は30種類以上
✔ 入会金不要+いつでも退会OK

公式サイトはこちら

Writer

侍テック編集部

株式会社SAMURAI

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。侍テック編集部では技術系コンテンツを中心に有用な情報を発信していきます。

あなたの目的に合わせた
SAMURAI ENGINEERの運営サービス

SAMURAI ENGINEER Pro

未経験でも挫折しないプログラミングスクール

詳細はこちら

SAMURAI TERAKOYA

日本最大級のサブスク型オンラインITスクール

詳細はこちら

SAMURAI ENGINEER Freelance

「一人で稼げる」スキルを身につける

詳細はこちら
Close