【Python】文字列中の文字が英字か数字かどうかを判定する方法を紹介!

こんにちは!

皆さんは、文字列の中の文字が英字なのか数字なのか確認したいと思ったことはありませんか?

Python初心者
英字だったらint型とかに変換できないよね!

「isalnum()」、「isalpha()」、「isdecimal()」、「isdigit()」を状況に応じて使い分けることで、簡単に判定することができますよ。

今回の記事では、以下の内容について紹介します。

  • 文字列中の文字がすべて英数字であるかどうかを判定する方法
  • 文字列中の文字がすべて英字であるかどうかを判定する方法
  • 文字列中の文字がすべて十進数字であるかどうかを判定する方法
  • 文字列中の文字がすべて数字であるかどうかを判定する方法

文字列中の文字がすべて英数字であるかを判定する「isalmum()」

「isalmum()」を使うと、文字列中の文字がすべて英数字であるかどうかを判定することができます。

具体的には、文字列中の文字すべてが「isalpha()」、「isdecimal()」、「isdigit()」、「isnumeric()」でTrueを返す文字であれば、「isalmun()」も Trueを返します。

str = 'pythonbeginner123'

print(str.isalnum())
True
空白は英数字と判定されません。

例)

str = 'python beginner123'

print(str.isalnum())
False

文字列中の文字がすべて英字であるかを判定する「isalpha()」

「isalpha()」を使うと、文字列中の文字がすべて英字であるかどうかを判定することができます。

英字は、Unicode 文字データベースで “Letter” として定義されているものです。

str = 'pythonbeginner'

print(str.isalpha())
True

文字列中の文字がすべて十進数字であるかを判定する「isdecimal()」

「isdecimal()」を使うと、文字列中の文字がすべて十進数字であるかどうかを判定することができます。

十進数字とは正式には、Unicode の一般カテゴリ “Nd” に含まれる文字を指します。

str1 = '123'
str2 = '①❷⑶'

print(str1.isdecimal())
print(str2.isdecimal())
True
False

①❷⑶のような数字は、十進数字ではないため、Falseとなってしまいます。

文字列中の文字がすべて数字であるかを判定する「isdigit()」

「isdigit()」を使うと、文字列中の文字がすべて数字であるかどうかを判定することができます。

ここでの数字とは、十進数字に加えて、互換上付き数字のような特殊操作を必要とする数字を含みます。

正式には、数字とは、プロパティ値 Numeric_Type=Digit または Numeric_Type=Decimal を持つ文字です。

str1 = '123'
str2 = '①❷⑶'

print(str1.isdigit())
print(str2.isdigit())
True
True

isdecimal()とは違い、①❷⑶のような数字もTrueと判定します。

まとめ

今回の記事では、以下の内容について紹介しました。

  • 文字列中の文字がすべて英数字であるかどうかを判定する方法
    →「isalnum()」を使用
  • 文字列中の文字がすべて英字であるかどうかを判定する方法
    「isalpha()」を使用
  • 文字列中の文字がすべて十進数字であるかどうかを判定する方法
    「isdecimal()」を使用
  • 文字列中の文字がすべて数字であるかどうかを判定する方法
    「isdigit()」を使用
Python初心者
これで、文字列の中の文字が英字なのか数字なのか判断できるようになったね!

文字列中の文字が英字なのか数字なのか判別できるようになって、変換する際などに役立てましょう!