hsmwhsmw

初心者入門文字列の中の文字が数を表す文字かどうかを判定する(isdecimal, isdigit, isnumeric) | Python入門

eyecatch

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

目次

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

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

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

str.isdecimal()

簡単なサンプルで試してみます。

>>> "75120".isdecimal()
True
>>> "75F2".isdecimal()
False
>>>

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

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

>>> "0982".isdecimal()
True
>>> "75a0".isdecimal()
False
>>>

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

>>> "-8052".isdecimal()
False
>>> "3.14".isdecimal()
False
>>> "7,524".isdecimal()
False
>>>

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

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

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

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

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

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

str.isdigit()

簡単なサンプルで試してみます。

>>> "85120".isdigit()
True
>>> "75F2".isdigit()
False
>>>

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

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

>>> "-8052".isdigit()
False
>>> "3.14".isdigit()
False
>>> "7,524".isdigit()
False
>>>

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

>>> "3785".isdigit()
True
>>> "4p90".isdigit()
False
>>>

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

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

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

>>> "⑤⑥⑦".isdecimal()
False
>>> "⑤⑥⑦".isdigit()
True
>>>

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

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

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

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

str.isnumeric()

簡単なサンプルで試してみます。

>>> "9852".isnumeric()
True
>>> "87E2".isnumeric()
False
>>>

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

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

>>> "-8052".isnumeric()
False
>>> "3.14".isnumeric()
False
>>> "7,524".isnumeric()
False
>>>

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

>>> "3785".isnumeric()
True
>>> "七五三".isnumeric()
True
>>> "拾伍".isnumeric()
True
>>>

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

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

-- --

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