ユーザーからの入力を処理する際、「入力された値は数字だけか?」「アルファベットだけで構成されているか?」といったチェック(バリデーション)が必要になることはよくあります。
Pythonの文字列型(str)には、文字列の内容を検査して True または False を返す便利なメソッド群が用意されています。
この記事では、主要な判定メソッドの一覧と、それぞれの具体的な挙動について解説します。
目次
文字列判定メソッド一覧
今回紹介する主なメソッドは以下の通りです。すべて「文字列全体がその条件を満たしているか」を判定します。
| メソッド名 | 判定内容 | Trueになる例 | Falseになる例 |
isalnum() | 英字または数字のみか | "abc123" | "abc-123" (記号) |
isalpha() | 英字のみか | "abc" | "abc1" (数字) |
isdecimal() | 10進数の数字のみか | "123" | "12.3" (小数) |
isascii() | ASCII文字のみか | "abc" | "あいう" (全角) |
isupper() | すべて大文字か | "ABC" | "Abc" |
islower() | すべて小文字か | "abc" | "Abc" |
isspace() | すべて空白文字か | " " | " a " |
1. 英字・数字・英数字の判定
IDやパスワードの形式チェックなどで頻繁に使用されます。
text_alpha = "Python"
text_num = "12345"
text_alnum = "Python3"
text_symbol = "Python-3"
print(f"--- isalpha (英字のみ) ---")
print(f"'{text_alpha}': {text_alpha.isalpha()}") # True
print(f"'{text_alnum}': {text_alnum.isalpha()}") # False (数字含むため)
print(f"\n--- isdecimal (数字のみ) ---")
print(f"'{text_num}': {text_num.isdecimal()}") # True
print(f"'{text_alnum}': {text_alnum.isdecimal()}")# False (英字含むため)
print(f"\n--- isalnum (英数字のみ) ---")
print(f"'{text_alnum}': {text_alnum.isalnum()}") # True
print(f"'{text_symbol}': {text_symbol.isalnum()}")# False (ハイフン含むため)
注意点: Python 3の isalpha() は、漢字やひらがな等の「Unicode上の文字」も英字(文字)として扱います("日本語".isalpha() は True)。ASCII文字のアルファベットだけに限定したい場合は、isascii() と組み合わせるなどの工夫が必要です。
2. 大文字・小文字の判定
文字列が大文字に統一されているか、小文字に統一されているかを判定します。数字や記号が含まれていても、それらは無視され、アルファベット部分だけで判定されます。
upper_str = "PYTHON 3.10"
lower_str = "python 3.10"
mixed_str = "Python 3.10"
print(f"--- isupper / islower ---")
print(f"'{upper_str}'.isupper(): {upper_str.isupper()}") # True
print(f"'{lower_str}'.islower(): {lower_str.islower()}") # True
print(f"'{mixed_str}'.islower(): {mixed_str.islower()}") # False
3. 空白文字の判定
isspace() は、スペース、タブ(\t)、改行(\n)などが含まれている場合に True を返します。文字が一つでも入っていると False になります。
space_only = " \t\n"
text_with_space = " a b "
print(f"--- isspace ---")
print(f"'{space_only}': {space_only.isspace()}") # True
print(f"'{text_with_space}': {text_with_space.isspace()}") # False
実践例:入力チェック関数
これらを組み合わせて、簡易的な入力チェッカーを作成してみます。
def check_password_strength(password):
if len(password) < 8:
return "短すぎます"
if not password.isascii():
return "半角文字のみ使用可能です"
if password.isalnum():
return "記号を1文字以上含めてください"
if password.islower() or password.isupper():
return "大文字と小文字を混在させてください"
return "OK"
# テスト
print(check_password_strength("password123")) # 記号なし
print(check_password_strength("Pass-123")) # OK
まとめ
isalnum: 英数字(記号なし)isalpha: 英字のみisdecimal: 数字のみ(整数)isascii: 半角英数字記号(ASCII文字)isspace: 空白のみ- 空文字列
""に対しては、isascii()以外はすべてFalseを返します。
