【Python】if文で文字列を含む条件を扱う方法
基本的な方法: in演算子
Pythonでif文を使って文字列が含まれているかをチェックする基本的な方法は、in
演算子を使うことです。
text = "Pythonは便利なプログラミング言語です"
if "便利" in text:
print("文字列に『便利』が含まれています")
このコードでは、変数text
に「便利」という文字列が含まれているかをチェックし、含まれている場合はメッセージを表示します。
大文字・小文字の違いを考慮する
通常、in
演算子は大文字・小文字を区別します。例えば次のコードは、期待した動作をしません。
text = "Hello World"
if "hello" in text:
print("含まれています")
else:
print("含まれていません") # このケースになる
これを解決するには、小文字変換を使うのが一般的です。
text = "Hello World"
if "hello" in text.lower():
print("含まれています")
複数のキーワードをチェックする
複数の文字列のいずれかを含むかをチェックしたい場合は、any()
を使うと便利です。
text = "Pythonのコードを学ぶ"
keywords = ["Python", "コード", "プログラミング"]
if any(word in text for word in keywords):
print("いずれかのキーワードが含まれています")
正規表現を使う
より高度な検索をしたい場合は、正規表現(re
モジュール)を使用できます。
import re
text = "この文章には123という数字が含まれています"
if re.search(r"\d+", text):
print("数字が含まれています")
特定の文字列で始まる・終わる
特定の文字列で始まるかどうかを調べるには startswith()
、終わるかどうかを調べるには endswith()
を使います。
text = "python_script.py"
if text.endswith(".py"):
print("Pythonのスクリプトファイルです")
if text.startswith("python"):
print("ファイル名はpythonで始まっています")
カスタム関数で条件を整理する
より複雑な条件を整理するには、カスタム関数を定義すると可読性が向上します。
def contains_keywords(text, keywords):
return any(word in text for word in keywords)
text = "今日はデータ分析をしています"
keywords = ["Python", "データ", "統計"]
if contains_keywords(text, keywords):
print("関連する単語が含まれています")
パフォーマンスを考慮する
大量のデータを扱う場合、リストをセットに変換すると検索が高速になります。
text = "PythonとRはデータ分析によく使われます"
keywords = {"Python", "R", "SQL"}
if any(word in text for word in keywords):
print("データ関連の単語が含まれています")
このように、文字列の部分一致をチェックする方法はいくつかあります。用途に応じて適切な方法を選んでください。