Pythonで文字列の一部を検索したいとき、どうすればよいのでしょうか。例えば「あるキーワードが文章の中に含まれているか」を判定する処理は、実務でもよく使われます。本記事では、部分一致を判定する方法を初心者向けにわかりやすく解説します。
Pythonで文字列の部分一致を判定する基本
最もシンプルな方法は、in
演算子を使う方法です。これはPythonの標準的な記法で、可読性が高く直感的に理解できます。
text = "I love Python programming"
if "Python" in text:
print("部分一致しました!")
このコードは「Python」という文字列が文章中に含まれているかを判定します。結果がTrue
なら部分一致あり、False
なら一致しないという仕組みです。短いコードで書けるため、初心者でも安心して使えます。
startswith() と endswith() を使う方法
部分一致を「文章の先頭」や「末尾」に限定したい場合は、startswith()
やendswith()
メソッドを活用します。これにより、より具体的な条件で判定できます。
text = "python_tutorial.pdf"
if text.endswith(".pdf"):
print("PDFファイルです")
この例では、ファイル名が.pdf
で終わっているかをチェックしています。逆に、先頭を判定したいときはstartswith()
を使いましょう。こうした方法は、ファイル処理やURL判定でよく利用されます。
find() や index() を使った方法
find()
メソッドは、検索した文字列が見つかった位置(インデックス)を返します。見つからない場合は-1
を返すため、条件分岐に利用できます。
text = "Data analysis with Python"
pos = text.find("Python")
if pos != -1:
print(f"見つかりました!位置: {pos}")
index()
も同様ですが、見つからなかった場合にValueError
を発生させます。そのため、安全に使うならfind()
の方が初心者にはおすすめです。
正規表現を使った部分一致
より高度な検索を行いたい場合は、re
モジュールを使います。正規表現は強力で、複雑なパターンを柔軟に判定できます。
import re
text = "My email is example@test.com"
if re.search(r"\w+@\w+\.\w+", text):
print("メールアドレスが含まれています")
この例では、文字列にメールアドレスのようなパターンが含まれているかを判定しています。シンプルな部分一致ならin
で十分ですが、条件が複雑になるときは正規表現が活躍します。
応用テクニック
大文字小文字を区別せずに判定
Pythonの文字列判定はデフォルトで大文字小文字を区別します。しかし、実務では「Python」と「python」を同じとみなしたい場合があります。そのときは.lower()
や.upper()
を活用しましょう。
text = "PYTHON is great!"
if "python" in text.lower():
print("部分一致しました(大文字小文字を無視)")
こうすることで、入力の表記ゆれにも対応できます。Webフォームやユーザー入力の検証に便利です。
リストの中から部分一致を探す
単一の文字列だけでなく、複数の候補の中から部分一致を探したい場面もあります。その場合はループを使って判定します。
keywords = ["Python", "Django", "Flask"]
text = "I am learning Django framework"
for word in keywords:
if word in text:
print(f"{word} が含まれています")
この方法を使うと、キーワード検索やログ解析など幅広い用途に応用できます。
よくあるエラーと注意点
Noneとの比較ミス
文字列検索でfind()
を使う場合、戻り値が-1
になる点を忘れると、条件分岐で誤動作することがあります。None
が返ってくるわけではないので注意しましょう。
正規表現のパフォーマンス
正規表現は便利ですが、大量のデータを処理する場合は速度が低下する可能性があります。単純な検索ならin
やfind()
を優先的に使うのがおすすめです。
実用例:ファイル名やログの検索
部分一致は日常的なプログラムでも活用されます。例えば、ログファイルから特定のエラーを探す場合や、ファイル名に含まれる特定の拡張子をチェックする場合です。
log = "2025-08-22 ERROR: File not found"
if "ERROR" in log:
print("エラーログを検出しました")
こうした単純なチェックでも、システム監視やテキスト解析に応用できます。
より詳しい情報は公式ドキュメントも参考にしてください。
Python公式ドキュメント: 文字列メソッド
Python初心者におすすめのサービス
「もっと実践的なコード例が欲しい」「自分の用途に合わせて教えてほしい」という方には、
テックアカデミーがおすすめです。
AI関連コースやシステム開発コース、アプリ開発コースなど豊富な学習が可能です。
さらに今なら無料相談でアマギフプレゼントもあるので、気軽にお申込みしてみてください。
また、プログラミング学習のプラットフォームとして、ココナラでは、現役エンジニアや経験豊富なPython講師が、あなたのレベルや目的に合わせてマンツーマンで指導してくれます。
書籍や動画ではカバーしきれない、あなた専用のカリキュラムで学べるのが最大の魅力。短時間で効率的にスキルを伸ばしたいなら、まずは出品者のサービスをチェックしてみましょう。
また、教える側としてスキルを活かして副業・独立を目指すことも可能です。
プログラミング経験やPythonの知識があれば、自分の得意分野をサービスとして出品し、全国の学習者から直接依頼を受けられます。オンラインで完結するため、場所や時間に縛られず、自分のペースで働けるのも大きなメリットです。
こちらのリンクから詳細をチェックしてみてください。
まとめ
Pythonで文字列の部分一致を判定する方法は、in
演算子が最も簡単で実用的です。さらにfind()
や正規表現を使えば、より高度な検索も可能です。目的に応じて方法を選べば、文字列処理がぐっと楽になります。
以下のリンクから、
SESの組込みシステムから色々な不満を持ち、自社WEBサービスへ転職した実体験の記事がありますので、是非読んでみてください。とても喜びます。
SESの組込みシステムから自社WEBサービスのエンジニアに転職した話

コメント