テキストデータを処理する際、「特定のキーワードが含まれているか」を確認したい場面は頻繁に発生します。例えば、ログファイルからエラーメッセージを探したり、ユーザーの入力に禁止用語が含まれていないかチェックしたりする場合です。
Pythonでは、in 演算子を使用することで、この包含判定を非常に直感的かつ簡潔に記述できます。
この記事では、in 演算子の基本的な使い方と、大文字・小文字を区別せずに判定する方法について解説します。
1. 基本的な包含判定 (in 演算子)
ある文字列の中に、特定の文字列(部分文字列)が含まれているかどうかを調べるには、in 演算子を使用します。
結果はブール値(True または False)で返されます。
構文:
結果 = "探したい文字列" in 対象の文字列
具体的な使用例:ログメッセージの解析
システムログのメッセージ内に “Failed” という単語が含まれているかどうかをチェックする例です。
# サーバーのログメッセージ
log_message = "[2025-12-10 10:00:05] Connection to database Failed."
# "Failed" が含まれているか確認
is_error = "Failed" in log_message
print(f"対象ログ: {log_message}")
print(f"'Failed' は含まれていますか?: {is_error}")
if is_error:
print("エラー検知: 管理者に通知を送信します。")
実行結果:
対象ログ: [2025-12-10 10:00:05] Connection to database Failed.
'Failed' は含まれていますか?: True
エラー検知: 管理者に通知を送信します。
このように、if 文の条件式として直接利用するのが一般的です。
含まれていないことの判定 (not in)
逆に、含まれていないことを確認したい場合は、not in 演算子を使用します。
email = "user-at-example.com"
# "@" が含まれていないか確認
if "@" not in email:
print("無効なメールアドレス形式です。")
2. 大文字と小文字を区別しない判定
in 演算子は、大文字と小文字を厳密に区別します。そのため、"python" in "Python Programming" は False になります。
検索機能などで、大文字・小文字の違いを無視して判定したい場合は、比較する両方の文字列を .lower()(すべて小文字化)または .upper()(すべて大文字化)メソッドで変換してから in 演算子を使用します。
具体的な使用例:タグ検索
記事のカテゴリタグを検索する際、ユーザーが “web” と入力しても “WEB” と入力してもヒットするようにします。
# 記事に設定されているタグ(大文字・小文字が混在)
article_tags = "Technology, AI, Web Development, Python"
# 検索キーワード
search_keyword = "web"
print(f"タグ情報: {article_tags}")
print(f"検索語: {search_keyword}")
# そのまま比較(Falseになる)
result_case_sensitive = search_keyword in article_tags
print(f"そのまま判定: {result_case_sensitive}")
# 両方を小文字に変換してから比較(Trueになる)
# "technology, ai, web development, python" の中に "web" があるかを探す
result_ignore_case = search_keyword.lower() in article_tags.lower()
print(f"小文字化して判定: {result_ignore_case}")
実行結果:
タグ情報: Technology, AI, Web Development, Python
検索語: web
そのまま判定: False
小文字化して判定: True
まとめ
- 文字列が含まれているか判定するには
"部分" in "全体"を使用します。 - 含まれていないか判定するには
not inを使用します。 - 大文字・小文字を無視したい場合は、両方を
.lower()で小文字に統一してから判定します。
