一、isdigit()函数
isdigit()函数是Python String类型内置的一个函数,作用是用来判断字符串是否全部由数字组成,返回结果为布尔值。
str1 = "123456"
print(str1.isdigit()) # True
str2 = "123hello"
print(str2.isdigit()) # False
isdigit()函数判断的是字符串中的每一个字符是否全部为数字,对于浮点数和负数均不能识别,所以需要使用其他方法。
二、isnumeric()函数
isnumeric()函数也是Python String类型内置的一个函数,作用是用来判断字符串是否全部由数字组成,返回结果为布尔值。同样可以处理汉字数字、罗马数字等形式的字符。
str1 = "123456"
print(str1.isnumeric()) # True
str2 = "①②③"
print(str2.isnumeric()) # True
isnumeric()函数除了可以判断阿拉伯数字外,还支持汉字数字、罗马数字等形式的字符,对字符串中的每一个字符进行判断。
三、isdigit()和isnumeric()的区别
isdigit()和isnumeric()函数的区别在于:前者只能判断阿拉伯数字,而后者可以识别更多的数字形式,包括罗马数字、汉字数字等。
str1 = "\u00B2" # 表示平方,是一种上标的表示方法
print(str1.isdigit()) # False
print(str1.isnumeric()) # True
str2 = "Ⅷ" # 表示罗马数字8
print(str2.isdigit()) # False
print(str2.isnumeric()) # True
四、使用正则表达式判断字符串是否为数字
正则表达式可以识别字符串中的各种形式的数字。使用re模块中的match()函数,可以匹配字符串是否完全符合条件。
import re
# 判断是否为整数或浮点数
str1 = "1234"
str2 = "12.3"
str3 = "4e3"
pattern = "^[-+]?(\d+(\.\d*)?|\.\d+)([eE][-+]?\d+)?$"
print(bool(re.match(pattern, str1))))
print(bool(re.match(pattern, str2))))
print(bool(re.match(pattern, str3))))
# 判断是否为纯数字字符
str4 = "123456"
pattern = "^\d+$"
print(bool(re.match(pattern, str4))))
上述正则表达式可以判断字符串是否为整数、浮点数和纯数字字符三种情况,可以很好地扩展到比较复杂的匹配场景中。
五、结论
Python String提供了多种判断字符串是否为数字的方法,使用者可以根据具体情况选择对应的方法。