首页 > 开发 > Python > 正文

Python isnumeric()函数的使用

2023-04-27 19:03:13
字体:
来源:转载
供稿:网友

Python中isnumeric()函数是判断一个字符串是否都由数字形式的字符构成,如果是则返回True,否则返回False.

Python的isnumerice()函数判断的数字形式要比isdecimal()函数和isdigit()函数的范围要广,该函数不仅能够判断十进制形式的数字,特殊性形式的数字(如阿拉伯数字,Unicode编码的上角标数字,带圈的数字),还能够判断像汉字中的“一二三”等这种汉字数字。

一、isnumeric()函数的语法形式

str.isnumeric()

str就是要被检查的字符串或字符串变量;

该函数没有参数;

该函数的返回值是两个逻辑值:TrueFalse

二、isnumeric()函数使用示例

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中的运行情况如下图所示:

Python isnumeric()函数示例

7、其它进制的数字字符串

str1 = "0b1101"
print(str1.isnumeric())
str1 = "0o37"
print(str1.isnumeric())
str1 = "0X4F"
print(str1.isnumeric())

以上在Python3.8.2中的输出如下图所示:

Python isumeric()函数使用示例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中的输出情况如下图所示:

Python isnumeric()函数使用示例3

三、isdecimal(),isdigit()和isnumeric()对比

本站在前面已经介绍了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))


雁过留声,欢迎留下你的见解与认识,共同分享所得。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表