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コードが書けるようになります。実際のプロジェクトでは、これらの方法を組み合わせて使用することが多いので、それぞれの特徴を理解して使い分けてください。