isdigit、isnumeric、isdecimal 区别
1、isdigit()、isnumeric()、isdecimal()
'''
判断字符串是否为数字:
isdigit():如果字符串是数字字符串,返回True,否则返回False。
isnumeric():如果字符串是数值字符串,返回True,否则返回False。
isdecimal():如果字符串是十进制字符串,返回True,否则返回False。
isdigit()
True: Unicode数字/全角数字(双字节)/byte数字(单字节)
isnumeric()
True: Unicode数字/全角数字(双字节)/汉字数字
注意:字节数字时会报错
isdecimal()
True: Unicode数字/全角数字(双字节)
注意:字节数字时会报错
'''
if __name__ == '__main__':
# unicode 数字
print('2'.isdigit()) # True
print('2'.isnumeric()) # True
print('2'.isdecimal()) # True
# 全角数字
print('2'.isdigit()) # True
print('2'.isnumeric()) # True
print('2'.isdecimal()) # True
# 汉字
print('四'.isdigit()) # False
print('四'.isnumeric()) # True
print('四'.isdecimal()) # False
# byte 字节
print(b"4".isdigit()) # True
# print(b"4".isnumeric()) # AttributeError: 'bytes' object has no attribute 'isnumeric'
# print(b"4".isdecimal()) # AttributeError: 'bytes' object has no attribute 'isdecimal'
# 罗马数字
print('IV'.isdigit()) # False
print('IV'.isnumeric()) # False
print('IV'.isdecimal()) # False
# 浮点数
print('2.1'.isdigit()) # False
print('2.1'.isnumeric()) # False
print('2.1'.isdecimal()) # False
2、unicodedata 处理数字
if __name__ == '__main__':
import unicodedata
print(unicodedata.numeric('2')) # 2.0
print(unicodedata.numeric('2')) # 2.0
print(unicodedata.numeric('四')) # 4.0
# # "〇","零","一","壱","二","弐","三","参","四","五",......,"廿","卅","卌","百","千","万","万","亿"
print(unicodedata.numeric('〇')) # 0.0
print(unicodedata.numeric('零')) # 0.0
print(unicodedata.numeric('万')) # 10000.0
# print(unicodedata.numeric(b'4')) # TypeError
# print(unicodedata.numeric('IV')) # TypeError
# print(unicodedata.numeric('2.1')) # TypeError
print(unicodedata.digit('2')) # 2
print(unicodedata.digit('2')) # 2
# print(unicodedata.digit(b'4')) # TypeError
# print(unicodedata.digit('2.0')) # TypeError
# print(unicodedata.digit('IV')) # TypeError
# print(unicodedata.digit('四')) # ValueError
print(unicodedata.decimal('2')) # 2
print(unicodedata.decimal('2')) # 2
# print(unicodedata.decimal(b'2')) # TypeError
# print(unicodedata.decimal('2.0')) # TypeError
# print(unicodedata.decimal('IV')) # TypeError
# print(unicodedata.decimal('四')) # ValueError