您的位置:

Python String的数字判断方法

一、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提供了多种判断字符串是否为数字的方法,使用者可以根据具体情况选择对应的方法。