函数 | 描述 |
---|---|
isdecimal() | 是否为十进制数字符,包括 Unicode 数字、双字节全角数字,不包括罗马数字、汉字数字、小数。 |
isdigit() | 是否为数字字符,包括 Unicode 数字,单字节数字,双字节全角数字,不包括汉字数字,罗马数字、小数。 |
isnumeric() | 是否所有字符均为数值字符,包括 Unicode 数字、双字节全角数字、罗马数字、汉字数字,不包括小数。 |
案例
纯数字 (unicode(=半角数字))
def isnumber(s): print(s+' isdigit: ', s.isdigit()) print(s+' isdecimal: ', s.isdecimal()) print(s+' isnumeric: ', s.isnumeric()) isnumber('123')
123 isdigit: True
123 isdecimal: True
123 isnumeric: True
带小数的数字字符串
isnumber('123.1')
123.1 isdigit: False
123.1 isdecimal: False
123.1 isnumeric: False
我们传入一个带小数的数字字符串,最终三个函数都返回 False,即带小数的数字字符串使用这三个函数返回的结果是一致的。
大写中文数字字符串
isnumber('壹贰叁')
壹贰叁 isdigit: False 壹贰叁 isdecimal: False 壹贰叁 isnumeric: True
我们传入一个大写中文数字字符串,最终只有 isnumeric() 返回了 True。
半角与全角数字(双字节)
0-9 对应 Unicode 编码范围:半角——’\u0030’ 到 ‘\u0039’ 全角——’\uff10’到’\uff19’
isnumber('\uff15')
5 isdigit: True 5 isdecimal: True 5 isnumeric: True
bytes 数字
In [54]: num = b'6' In [55]: num.isdigit() Out[55]: True In [56]: num.isnumeric() --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-56-ea68d3c62431> in <module> ----> 1 num.isnumeric() AttributeError: 'bytes' object has no attribute 'isnumeric' In [57]: num.isdecimal() --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-57-d8e1fd9dc8d6> in <module> ----> 1 num.isdecimal() AttributeError: 'bytes' object has no attribute 'isdecimal'
阿拉伯数字
isnumber('Ⅱ')
Ⅱ isdigit: False Ⅱ isdecimal: False Ⅱ isnumeric: True
汉字数字
isnumber('四') 四 isdigit: False 四 isdecimal: False 四 isnumeric: True
reference
https://haicoder.net/python/python-string-isdecimal-isdigit-isnumeri.html#:~:text=Python%20isdecimal%20isdigit%20isnumeric%E5%8C%BA%E5%88%AB%E6%80%BB%E7%BB%93%20Python%20%E5%88%A4%E6%96%AD%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%98%AF%E5%90%A6%E6%98%AF%E6%95%B0%E5%AD%97%E4%B8%BB%E8%A6%81%E6%9C%89%E4%B8%89%E7%A7%8D%E6%96%B9%E6%B3%95%EF%BC%8C%E5%88%86%E5%88%AB%E4%B8%BA%20isnumeric%20%28%29,%E5%92%8C%20isdecimal%20%28%29%E3%80%82%20isdecimal%20%28%29%20%EF%BC%9A%E6%98%AF%E5%90%A6%E4%B8%BA%E5%8D%81%E8%BF%9B%E5%88%B6%E6%95%B0%E5%AD%97%E7%AC%A6%EF%BC%8C%E5%8C%85%E6%8B%AC%20Unicode%20%E6%95%B0%E5%AD%97%E3%80%81%E5%8F%8C%E5%AD%97%E8%8A%82%E5%85%A8%E8%A7%92%E6%95%B0%E5%AD%97%EF%BC%8C%E4%B8%8D%E5%8C%85%E6%8B%AC%E7%BD%97%E9%A9%AC%E6%95%B0%E5%AD%97%E3%80%81%E6%B1%89%E5%AD%97%E6%95%B0%E5%AD%97%E3%80%81%E5%B0%8F%E6%95%B0%E3%80%82