Python 文字列が数字であるかを判定する方法を解説します!

Python 文字列が数字であるかを判定する方法を解説します

Pythonでは、値や変数には数値型や文字列型があり、文字列を使って数値を表すことはよくあります。

今回は、文字列が数字であるかを判定させる方法について解説します。

目次

文字列が数字であるかを判定する

イメージアート画像

文字列が数字であるかを判定する

Pythonでは、文字列か数字かを判定するには、組み込み関数である

  • isdecimal()
  • isdigit()
  • isnumeric() 

を使うことで判定させることができます。

str.isdecimal()

str.isdecimal() は、1文字以上の文字列があり、すべて10進数数字であれば「True」を返し、それ以外は「False」 を返します。
ただし、全角数字でも10進数数字であれば「True」となります。

str.isdigit()

str.isdigit() は、1文字以上の文字列があるとき、それらがすべて数字なら「True」を返し、それ以外は「False」を返します。

数字については、10進数数字に加えて、上付き数字(2乗を表す)ような文字も「True」を返します。

str.isnumeric()

str.isnumeric() は、1文字以上の文字列があり、すべて数を表す文字であれば「True」を返し、それ以外は「False」を返します。

str.isnumeric() は、str.isdecimal()、str.isdigit()よりも、数値とみなす文字の範囲が大きくなります。
数字に加えて、漢数字などのUnicode文字も「True」を返します。

サンプルコード

イメージアート画像

サンプルコード

文字列の10進数数字の場合

text = '1234'

print(text.isdecimal())
# 実行結果: True

print(text.isdigit())
# 実行結果: True

print(text.isnumeric())
# 実行結果: True

全角数字で10進数数字の場合

text = '1234'

print(text.isdecimal())
# 実行結果: True

print(text.isdigit())
# 実行結果: True

print(text.isnumeric())
# 実行結果: True

丸付き数字の場合

text = '①②③④'

print(text.isdecimal())
#  実行結果: False

print(text.isdigit())
#  実行結果: True

print(text.isnumeric())
#  実行結果: True

丸付き数字に数字以外の文字が含まれている場合( 例:  ピリオド)

text = '①②③.④'

print(text.isdecimal())
#  実行結果: False

print(text.isdigit())
#  実行結果: False

print(text.isnumeric())
#  実行結果: False

漢数字の場合

text = '一二三四'

print(text.isdecimal())
#  実行結果: False

print(text.isdigit())
#  実行結果: False

print(text.isnumeric())
#  実行結果: True


text = '壱弐参四'

print(text.isdecimal())
#  実行結果: False

print(text.isdigit())
#  実行結果: False

print(text.isnumeric())
#  実行結果: True

漢数字で数字以外の文字が含まれている場合( 例:  -符号)

text = '-壱弐参四'

print(text.isdecimal())
#  実行結果: False

print(text.isdigit())
#  実行結果: False

print(text.isnumeric())
#  実行結果: False

10進数数字で小数点がある場合

text = '123.4'

print(text.isdecimal())
#  実行結果: False

print(text.isdigit())
#  実行結果: False

print(text.isnumeric())
#  実行結果: False

(符号やピリオドが含まれていると「False」になります。)

符号やピリオドが含まれているときの対処方法

イメージアート画像

符号やピリオドが含まれているときの対処方法

解説してきました3つの組み込み関数では、文字列に数を表す文字以外が含まれていると「False」となりますが、
数値として認識させるためには、float()に文字列を渡せば、float型である数値型に変換することができます。

text = '123.4'

a = float(text)
print(a)
#  実行結果: 123.4

print(type(a))
#  実行結果: <class 'float'>


text = '-1234'

print(float(text))
#  実行結果: -1234.0

カンマが含まれている場合の対処方法

イメージアート画像

カンマが含まれている場合の対処方法

float() は、文字列の数字にカンマが含まれていると、ValueErrorとなってしまいます。
数字として扱いたい場合は、str.replace()を使って、カンマを除去してから、float()へ変換することで数値として扱うことができます。

def is_num(t: str) -> bool:
    try:
        float(t.replace(',', ''))
        return True
    except ValueError:
        return False

text = '1,234'

print(is_num(text))
#  実行結果: True

まとめ: Python 文字列が数字であるかを判定する方法

イメージアート画像

まとめ: Python 文字列が数字であるかを判定する方法

文字列が数字であるかを判定する

Pythonでは、文字列か数字かを判定するには、組み込み関数である

  • isdecimal()
  • isdigit()
  • isnumeric() 

を使うことで判定させることができます。

それぞれ数字とみなす文字の範囲が異なるということを解説しました。

text = '1234'

print(text.isdecimal())
# 実行結果: True


text = '一二三四'

print(text.isnumeric())
# 実行結果: True


text = '①②③④'

print(text.isdigit())
# 実行結果: True
よかったらシェアしてください!
目次