今回は、Pythonで大文字か小文字かを判定する方法についてご紹介します。
Pythonで大文字か小文字かを判定する基本的な方法
Pythonには、文字列の大文字・小文字を判定するための便利なメソッドが用意されています。
isupper()は文字列内のアルファベットがすべて大文字の場合にTrueを返し、islower()はすべて小文字の場合にTrueを返します。
以下のコードは1文字だけを判定する場合の例です。
1 2 3 4 5 6 7 8 9 |
ch = 'A' # isupper() と islower() の例 if ch.isupper(): print("大文字です") elif ch.islower(): print("小文字です") else: print("アルファベットではないか、判定できません") |
実行結果は以下のとおりです。
大文字です
複数文字を判定する場合は、文字列全体がすべて同じケース(大文字または小文字)である必要があります。
アルファベット以外の文字(数字・記号など)が混在している場合、Falseを返す点に注意してください。
ASCIIコードを用いた判定方法
次に、ASCIIコードの範囲を使った方法です。
英語アルファベットのみを対象とする場合、’A’~’Z’と’a’~’z’の範囲を比較演算子で判定できます。
以下はコード例です。
1 2 3 4 5 6 7 8 9 |
ch = 'b' # ASCIIコードで大文字・小文字を判定する例 if 'A' <= ch <= 'Z': print("大文字です") elif 'a' <= ch <= 'z': print("小文字です") else: print("アルファベットではないか、判定できません") |
実行結果は以下のとおりです。
小文字です
この方法はASCII範囲外の文字には対応できません。
たとえば、アクセント付き文字や他言語のアルファベットを含む場合は別の方法を検討する必要があります。
正規表現やstringモジュールを使った判定方法
正規表現(reモジュール)を用いる方法
正規表現を使うと、[A-Z]や[a-z]のパターンにマッチするかどうかで、大文字か小文字かを判定できます。
以下のコード例では、re.fullmatch()を使っています。
1 2 3 4 5 6 7 8 9 10 11 |
import re ch = 'G' # 正規表現で大文字・小文字を判定する例 if re.fullmatch(r'[A-Z]', ch): print("大文字です") elif re.fullmatch(r'[a-z]', ch): print("小文字です") else: print("アルファベットではないか、判定できません") |
実行結果は以下のとおりです。
大文字です
文字パターンを柔軟に設定できるのが正規表現の利点です。
stringモジュールを利用する方法
Pythonのstringモジュールには、ascii_uppercaseやascii_lowercaseという定数が用意されています。
これらの定数を用いると、文字が大文字の英字か小文字の英字かを簡単に判定できます。
1 2 3 4 5 6 7 8 9 10 11 |
import string ch = 'm' # stringモジュールで大文字・小文字を判定する例 if ch in string.ascii_uppercase: print("大文字です") elif ch in string.ascii_lowercase: print("小文字です") else: print("アルファベットではないか、判定できません") |
実行結果は以下のとおりです。
小文字です
英語アルファベットのみを扱う場合に便利な方法です。
よくあるエラーや注意点
ここでは、大文字・小文字判定で陥りやすいポイントを整理します。
- アルファベット以外の文字が含まれる場合: isupper()やislower()は、文字列にアルファベットが全く含まれない場合などにはFalseを返します。
- Unicode文字の扱い: ASCIIコードによる比較やstring.ascii_uppercase / ascii_lowercaseは英語以外の文字に対応できないため、unicode文字を扱う際はisupper()やislower()を検討してください。
- 複数文字列の扱い: “Hello”のように大文字と小文字が混在している場合、isupper()やislower()はFalseを返します。必要に応じて文字ごとに判定する方法も考えましょう。
まとめ
Pythonでは、大文字か小文字かを判定する方法が複数存在します。
用途に合わせて、isupper() / islower()、ASCIIコード範囲、正規表現、stringモジュールなどを使い分けると効率的です。
英語以外の文字や複数文字列の対応は、判定方法の特徴をしっかり理解して選びましょう。