目次
概要
文字列が数字かどうかを判定するには、str
型に用意されているstr.isdecimal()
やstr.isdigit()
やstr.isnumeric()
メソッドを利用します。
文字列が十進数字かどうかを判定する(str.isdecimal)
isdecimal()
は、すべての文字が十進数字(Unicodeの一般カテゴリNd
に含まれる文字)だとTrue
となります。- 全角のアラビア数字なども
True
となります。
例
isnumeric()
# 半角数値 assert "1234567890".isdecimal() == True # 全角数字 assert "1234567890".isdecimal() == True # 2乗を表す上付き数字² assert "²".isdecimal() == False # 分数 assert "½".isdecimal() == False # ローマ数字 assert "Ⅶ".isdecimal() == False # 漢数字 assert "一二三四五六七八九〇".isdecimal() == False assert "壱億参阡萬".isdecimal() == False
参照
文字列が数字かどうかを判定する(str.isdigit)
isdigit()
は、isdecimal()
でTrue
となる数字に加え、Unicodeのプロパティ値Numeric_TypeがDigitまたはDecimalである数字もTrue
となります。- 例えば、2乗を表す上付き数字
²
(\u00B2)はisdecimal()
ではFalse
ですが、isdigit()
ではTrue
です。
例
isnumeric()
# 半角数値 assert "1234567890".isdigit() == True # 全角数字 assert "1234567890".isdigit() == True # 2乗を表す上付き数字² assert "²".isdigit() == True # 分数 assert "½".isdigit() == False # ローマ数字 assert "Ⅶ".isdigit() == False # 漢数字 assert "一二三四五六七八九〇".isdigit() == False assert "壱億参阡萬".isdigit() == False
参照
文字列が数を表す文字かどうかを判定する(str.isnumeric)
isnumeric()
は、isdigit()
でTrue
となる数字に加え、Unicodeのプロパティ値Numeric_TypeがNumericである数字もTrue
となります。- 分数やローマ数字、漢数字なども
True
となります。
例
isnumeric()
# 半角数値 assert "1234567890".isnumeric() == True # 全角数字 assert "1234567890".isnumeric() == True # 2乗を表す上付き数字² assert "²".isnumeric() == True # 分数 assert "½".isnumeric() == True # ローマ数字 assert "Ⅶ".isnumeric() == True # 漢数字 assert "一二三四五六七八九〇".isnumeric() == True assert "壱億参阡萬".isnumeric() == True