Python中isnumeric()函数是判断一个字符串是否都由数字形式的字符构成,如果是则返回True,否则返回False.
Python的isnumerice()函数判断的数字形式要比isdecimal()函数和isdigit()函数的范围要广,该函数不仅能够判断十进制形式的数字,特殊性形式的数字(如阿拉伯数字,Unicode编码的上角标数字,带圈的数字),还能够判断像汉字中的“一二三”等这种汉字数字。
str.isnumeric()
str就是要被检查的字符串或字符串变量;
该函数没有参数;
该函数的返回值是两个逻辑值:True或False
1、字符串中只有纯数字
str1 = "1234"
print(str1.isnumeric())
输出:True
2、字符串是含有小数点的数字形式
str1 = "12.34"
print(str1.isnumeric())
输出:False
3、全角数字
str1 = "123456"
print(str1.isnumeric())
输出:True
4、上角标数字
str1 = "¹²³" #上角标数字
print(str1.isnumeric()) # True
str1 = "¼⅓" #上角标分数
print(str1.isnumeric()) #True
5、字符串是分数
str1 = "1/4"
print(str1.isnumeric())
输出:False
6、其它数字形式
str1 = "一二三" #汉字数字
print(str1.isnumeric()) # True
str1 = "ⅠⅡⅢ" #罗马数字
print(str1.isnumeric()) # True
str1 = "①②③❶❷㈠" #带圈的数字
print(str1.isnumeric()) #True
str1 = "壹贰叁肆拾佰仟" #大写汉字数字
print(str1.isnumeric()) # True
str1 = "One" #英文数字单词
print(str1.isnumeric()) # False
以上在Python 3.8.2中的运行情况如下图所示:
7、其它进制的数字字符串
str1 = "0b1101"
print(str1.isnumeric())
str1 = "0o37"
print(str1.isnumeric())
str1 = "0X4F"
print(str1.isnumeric())
以上在Python3.8.2中的输出如下图所示:
8、字符串包含特殊字符
str1 = "" #空字符串
print(str1.isnumeric()) #False
str1 = "12 34" #含空格
print(str1.isnumeric()) #False
str1 = "abc123" #含字母
print(str1.isnumeric()) #False
str1 = "@123" #含特殊字符
print(str1.isnumeric()) #False
str1 = "武林网VEVB" #不含数字
print(str1.isnumeric()) #False
以上在Python3.8.2中的输出情况如下图所示:
本站在前面已经介绍了isdecimal()和isdigit()函数的使用,通过三者的案例对比可以得出以下结论:
(1)isdecimal()函数在中国范围内仅能判断[0-9]十个阿拉伯数字,包括半角和全角形式;
(2)isdigit()函数除了isdecimal()函数检查的数字外,还包括上角标数字[0-9]的全角和半角形式,以及类似①,②等,❶❷等,⑴⑵等一个整体的Unicode数字,⒈ ⒉等整体后带点的数字格式;
(3)isnumeric()函数除了isdecimal()函数和isdigit()函数能检查的数字格式外,还包含了像汉字“一二三”等,“⅓ ⅔ ⅘”等作为整体的分数数字,㈠, ㈡, ㈢,㊀, ㊁, ㊂等作为整体形式的数字,还有用于记账用的“壹,贰,叁,拾,佰,仟”等形式的数字。
可以使用下面的程序使用上面三个函数把Unicode字符中的所有数字格式输出:
import unicodedata
list_decimal = [] #isdecimal()为True的数字
list_digit = [] #isdigit()为True的字符
list_numeric = [] #isnumeric()为True的字符
deccnt = digcnt = numcnt = 0
for i in range(2 ** 16):
char = chr(i)
if char.isdecimal():
list_decimal.append(char)
deccnt += 1
if char.isdigit():
list_digit.append(char)
digcnt += 1
if char.isnumeric():
list_numeric.append(char)
numcnt += 1
print('十进制形式,共有:{}个,分别是:{}'.format(deccnt,list_decimal))
print('数字字符共有:{}个,分别是:'.format(digcnt),list_digit)
print('表示数字意义的字符共有:{}个,分别是:{}'.format(numcnt,list_numeric))
雁过留声,欢迎留下你的见解与认识,共同分享所得。
新闻热点
疑难解答