文字列の中の文字が数を表す文字かどうかを判定する(isdecimal, isdigit, isnumeric)

文字列で用意されているメソッドの中で、文字列の中に含まれる文字が数を表す文字かどうか判定するのに使用できるメソッドの使い方について解説します。

(2022 年 04 月 11 日公開 / 2022 年 04 月 11 日更新)

すべての文字が10進数の文字かどうかを判定する(isdecimalメソッド)

isdecimal メソッドは文字列中のすべての文字が10進数で使われる文字で、かつ 1 文字以上ある場合に真を返します。使い方は次の通りです。

str.isdecimal()

実際の使い方は次の通りです。

print("75120".isdecimal())
>> True

print("75F2".isdecimal())
>> False

10進数の文字とは公式サイトでは「Unicode の一般カテゴリ "Nd" に含まれる文字を指します」と説明されています。日本で主に使われる 0 ~ 9 の数値だけでなく世界で 10 進数を表わすために使われている文字が含まれているので注意してください。

全角文字であっても 10 進数を表す数値の文字であれば判定することができます。

print("0982".isdecimal())
>> True

print("75a0".isdecimal())
>> False

カンマ(,)、ハイフン(-)、ドット(.)が含まれていると偽になります。

print("-8052".isdecimal())
>> False

print("3.14".isdecimal())
>> False

print("7,524".isdecimal())
>> False

漢数字は偽となります。

print("七五三".isdecimal())
>> False

空文字の場合は偽となります。

print("".isdecimal())
>> False

すべての文字が数字の文字かどうかを判定する(isdigitメソッド)

isdigit メソッドは文字列中のすべての文字が数字で使われる文字で、かつ 1 文字以上ある場合に真を返します。使い方は次の通りです。

str.isdigit()

実際の使い方は次の通りです。

print("85120".isdigit())
>> True

print("75F2".isdigit())
>> False

数字で使われる文字とは公式サイトでは「数字とは、プロパティ値 Numeric_Type=Digit または Numeric_Type=Decimal を持つ文字です。」と説明されています。 isdecimal メソッドよりもさらに多くの数字で使われる文字が含まれているので注意してください。

isdigit メソッドの場合もカンマ(,)、ハイフン(-)、ドット(.)が含まれていると偽になります。

print("-8052".isdigit())
>> False

print("3.14".isdigit())
>> False

print("7,524".isdigit())
>> False

全角文字であっても数値の文字であれば判定することができます。

print("3785".isdigit())
>> True

print("4p90".isdigit())
>> False

ただし漢数字は偽となります。

print("七五三".isdigit())
>> False

Numeric_Type=Digit に分類される数値として isdigit メソッドでは ⑤⑥⑦ のような文字も真と判定されます。

print("⑤⑥⑦".isdecimal())
>> False

print("⑤⑥⑦".isdigit())
>> True

空文字の場合は偽となります。

print("".isdigit())
>> False

すべての文字が数の文字かどうかを判定する(isnumericメソッド)

isnumeric メソッドは文字列中のすべての文字が数で使われる文字で、かつ 1 文字以上ある場合に真を返します。使い方は次の通りです。

str.isnumeric()

実際の使い方は次の通りです。

print("9852".isnumeric())
>> True

print("87E2".isnumeric())
>> False

数で使われる文字とは公式サイトでは「数を表す文字は、プロパティ値 Numeric_Type=Digit、 Numeric_Type=Decimal または Numeric_Type=Numeric を持つものです。」と説明されています。 isdigit メソッドよりもさらに多くの数字で使われる文字が含まれているので注意してください。

isnumeric メソッドの場合もカンマ(,)、ハイフン(-)、ドット(.)が含まれていると偽になります。

print("-8052".isnumeric())
>> False

print("3.14".isnumeric())
>> False

print("7,524".isnumeric())
>> False

isnumeric メソッドでは全角文字の数値に加えって漢数字も真となります。

print("3785".isnumeric())
>> True

print("七五三".isnumeric())
>> True

print("拾伍".isnumeric())
>> True

空文字の場合は偽となります。

print("".isnumeric())
>> False

-- --

文字列で用意されているメソッドの中で、文字列の中に含まれる文字が数を表す文字かどうか判定するのに使用できるメソッドの使い方について解説しました。

( Written by Tatsuo Ikura )

Twitterでシェアする
広告
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。