【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'

 

总结:

 

posted @ 2021-02-21 16:44  绮楼听风雨  阅读(1086)  评论(0)    收藏  举报