isdecimal()
- 官方文档截图
- 简单地说:若字符串中所有字符都是十进制字符,则返回
True
,否则返回False
isdigit()
-
官方文档截图
-
简单地说:若字符串中所有字符都是数字字符,则返回
True
,否则返回False
。 -
所以,
isdigit()
的范围大于isdecimal()
isnumeric()
-
官方文档截图
-
简单地说:若字符串中所有字符都是数字字符,则返回
True
,否则返回False
。 -
与
isdecimal()
,isdigit()
有区别
对比
isdecimal()
True: Unicode 数字,全角数字(双字节)
False: 小数,罗马数字,汉字数字
Error: byte 数字(半角、单字节)
isdigit()
True: Unicode 数字,全角数字(双字节),byte 数字(半角、单字节)
False: 小数,罗马数字,汉字数字
Error: 无
isnumeric()
True: Unicode 数字,全角数字(双字节),罗马数字,汉字数字
False: 小数
Error: byte 数字(半角、单字节)
-
isdecimal()
与isdigit()
的区别就在byte
数字上byte
数字在使用isdecimal()
时抛出异常byte
数字在使用isdigit()
时输出True
-
isdecimal()
与isnumeric()
的区别就在罗马数字和汉字数字上- 罗马数字和汉字数字在使用
isdecimal()
时输出False
- 罗马数字和汉字数字在使用
isnumeric()
时输出True
- 罗马数字和汉字数字在使用
-
另外,对“圈数字”而言
False
:isdecimal()
True
:isdigit()
,isnumeric()
举例
例1
num1 = \'6\' # unicode
num2 = \'6\' # 全角
num3 = \'6.6\' # 小数
num4 = \'Ⅵ\' # 罗马数字 6
num5 = \'六\' # 汉字数字
num6 = b\'6\' # byte / 半角
print(num1.isdecimal()) # T unicode
print(num2.isdecimal()) # T 全角
print(num3.isdecimal()) # F 小数
print(num4.isdecimal()) # F 罗马数字
print(num5.isdecimal()) # F 汉字数字
print(num6.isdecimal()) # AttributeError: \'bytes\' object has no attribute \'isdecimal\'
print(num1.isdigit()) # T unicode
print(num2.isdigit()) # T 全角
print(num3.isdigit()) # F 小数
print(num4.isdigit()) # F 罗马数字
print(num5.isdigit()) # F 汉字数字
print(num6.isdigit()) # T 半角
print(num1.isnumeric()) # T unicode
print(num2.isnumeric()) # T 全角
print(num3.isnumeric()) # F 小数
print(num4.isnumeric()) # T 罗马数字
print(num5.isnumeric()) # T 汉字数字
print(num6.isnumeric()) # AttributeError: \'bytes\' object has no attribute \'isnumeric\'
例2
>>> "②".isdecimal()
False
>>> "②".isdigit()
True
>>> "②".isnumeric()
True
>>>