Pythonのif文での文字列比較の基本
完全一致の比較(==演算子)
Pythonで最も基本的な文字列比較は==
演算子を使った完全一致の判定です。2つの文字列が完全に同じ場合にTrue
、異なる場合にFalse
を返します。
text = "hello" if text == "hello": print("文字列が一致しました") else: print("文字列が一致しません") # 実行結果: 文字列が一致しました
大文字と小文字は区別されるため、以下のような場合はFalse
となります。
text = "Hello" if text == "hello": print("一致") else: print("不一致") # 実行結果: 不一致
不一致の比較(!=演算子)
文字列が異なることを確認したい場合は、!=
演算子を使用します。
user_input = "no" if user_input != "yes": print("処理を中止します") else: print("処理を継続します") # 実行結果: 処理を中止します
部分一致での文字列比較
in演算子を使った判定方法
特定の文字列が含まれているか確認したい場合は、in
演算子を使用します。
filename = "sample_data.csv" if ".csv" in filename: print("CSVファイルです") else: print("CSVファイルではありません") # 実行結果: CSVファイルです
not in演算子の活用
逆に、特定の文字列が含まれていないことを確認する場合はnot in
演算子を使用します。
email = "user@example.com" if "@" not in email: print("無効なメールアドレスです") else: print("有効なメールアドレスの形式です") # 実行結果: 有効なメールアドレスの形式です
前方一致・後方一致での文字列比較
startswith()メソッドの使い方
文字列が特定の文字で始まっているか確認するには、startswith()
メソッドを使用します。
url = "https://www.example.com" if url.startswith("https://"): print("セキュアなURLです") else: print("HTTPSではありません") # 実行結果: セキュアなURLです
endswith()メソッドの使い方
文字列が特定の文字で終わっているか確認するには、endswith()
メソッドを使用します。
filename = "data.json" if filename.endswith(".json"): print("JSONファイルです") # 実行結果: JSONファイルです
大文字小文字を区別しない文字列比較
lower()とupper()メソッドの活用
大文字小文字を区別せずに比較したい場合は、両方の文字列をlower()
またはupper()
で統一してから比較します。
user_input = "YES" if user_input.lower() == "yes": print("処理を実行します") # 実行結果: 処理を実行します
実務でよく使われるケース
ユーザー入力の処理では、大文字小文字を区別しない比較がよく使われます。
command = input("続行しますか? (yes/no): ") if command.lower() in ["y", "yes", "ok"]: print("処理を続行します") elif command.lower() in ["n", "no", "cancel"]: print("処理を中止します") else: print("無効な入力です")
複数条件での文字列比較
and演算子を使った複合条件
複数の条件をすべて満たす場合は、and
演算子を使用します。
password = "MyPassword123" if len(password) >= 8 and "123" in password: print("パスワードは8文字以上で数字を含んでいます") # 実行結果: パスワードは8文字以上で数字を含んでいます
or演算子を使った複合条件
複数の条件のいずれかを満たす場合は、or
演算子を使用します。
file_extension = "txt" if file_extension in ["txt", "csv", "json"]: print("処理可能なファイル形式です") # 実行結果: 処理可能なファイル形式です
正規表現を使った高度な文字列比較
より複雑なパターンマッチングが必要な場合は、正規表現を使用します。re
モジュールを使用します。
import re email = "user@example.com" pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$' if re.match(pattern, email): print("有効なメールアドレス形式です") else: print("無効なメールアドレス形式です") # 実行結果: 有効なメールアドレス形式です
よくある間違いと注意点
is演算子との違い
文字列比較では==
演算子を使用し、is
演算子は使用しないようにしましょう。is
演算子はオブジェクトの同一性を判定するためのものです。
# 正しい方法 text1 = "hello" text2 = "hello" if text1 == text2: print("文字列が同じです") # 避けるべき方法 if text1 is text2: print("同じオブジェクトです") # 予期しない結果になる可能性
型変換の注意点
文字列と数値を比較する場合は、事前に型変換を行う必要があります。
user_input = "123" number = 123 # 正しい比較方法 if user_input == str(number): print("文字列として同じです") # または if int(user_input) == number: print("数値として同じです")
まとめ
Pythonのif文での文字列比較について、7つの主要な方法を解説しました。
- 完全一致:
==
演算子を使用 - 不一致:
!=
演算子を使用 - 部分一致:
in
演算子とnot in
演算子を使用 - 前方一致:
startswith()
メソッドを使用 - 後方一致:
endswith()
メソッドを使用 - 大文字小文字を区別しない比較:
lower()
やupper()
メソッドを活用 - 複数条件:
and
、or
演算子を使用
適切な比較方法を選択することで、より読みやすく効率的なPythonコードが書けるようになります。実際のプロジェクトでは、これらの方法を組み合わせて使用することが多いので、それぞれの特徴を理解して使い分けてください。