【Python】isdigit()、isdecimal()和isnumeric()的比较
1、三者均支持判断unicode数字和全角数字(双字节),结果均为True
1 str1 = "1" # unicode 2 print(str1.isdigit()) # ==> True 3 print(str1.isdecimal()) # ==> True 4 print(str1.isnumeric()) # ==> True 5 6 print('-' * 50) 7 str1 = "1" # 全角 8 print(str1.isdigit()) # ==> True 9 print(str1.isdecimal()) # ==> True 10 print(str1.isnumeric()) # ==> True
2、三者均支持判断小数和罗马数字,结果均为False
1 str1 = "1.1" # 小数 2 print(str1.isdigit()) # ==> False 3 print(str1.isdecimal()) # ==> False 4 print(str1.isnumeric()) # ==> False 5 6 print('-' * 50) 7 str1 = "I" # 罗马数字 8 print(str1.isdigit()) # ==> False 9 print(str1.isdecimal()) # ==> False 10 print(str1.isnumeric()) # ==> False
3、三者均支持判断汉字数字,但isdigit()和isdecimal()结果为False,isnumeric()结果为True
1 str1 = "一" # 汉字数字 2 print(str1.isdigit()) # ==> False 3 print(str1.isdecimal()) # ==> False 4 print(str1.isnumeric()) # ==> True 5 6 print('-' * 50) 7 str1 = "壹" # 汉字数字 8 print(str1.isdigit()) # ==> False 9 print(str1.isdecimal()) # ==> False 10 print(str1.isnumeric()) # ==> True
4、isdecimal()和isnumeric()不支持判断byte数字(单字节);isdigit()支持判断byte数字(单字节),结果为True
1 str1 = b"1" # byte 2 print(str1.isdigit()) # ==> True 3 print(str1.isdecimal()) # ==> AttributeError 'bytes' object has no attribute 'isdecimal' 4 print(str1.isnumeric()) # ==> AttributeError 'bytes' object has no attribute 'isnumeric'
总结: