欢迎访问宙启技术站
智能推送

判断字符串是否为数字:python函数判断字符串是否为数字

发布时间:2023-06-11 01:43:10

Python 提供了一些方法来判断字符串是否为数字,下面介绍几个常用的方法。

方法一:使用 isdigit() 方法

isdigit() 方法可以检查字符串是否只包含数字字符。如果字符串中只包含数字字符,则返回 True,否则返回 False。

示例代码:

str_num = "1234"
str_not_num = "12a4"

print(str_num.isdigit())      # True
print(str_not_num.isdigit())  # False

方法二:使用 isnumeric() 方法

isnumeric() 方法也可以检查字符串是否只包含数字字符。该方法不仅可以识别 0-9 的数字,还可以识别其他数字字符,例如中文数字字符。

示例代码:

str_num = "1234"
str_not_num = "12a4"
str_cn_num = "三百二十一"

print(str_num.isnumeric())      # True
print(str_not_num.isnumeric())  # False
print(str_cn_num.isnumeric())   # True

方法三:使用 isdecimal() 方法

isdecimal() 方法只能检查字符串是否只包含十进制数字字符。如果字符串中包含其他字符,则返回 False。

示例代码:

str_num = "1234"
str_not_num = "12a4"

print(str_num.isdecimal())      # True
print(str_not_num.isdecimal())  # False

方法四:使用 try-except 块

在 Python 中,可以将字符串转换为数字类型,例如 int、float 等。如果将非数字类型的字符串转换为数字,则会引发 ValueError 异常。因此,可以使用 try-except 块来判断字符串是否为数字。

示例代码:

def is_number(s):
    try:
        float(s)
        return True
    except ValueError:
        return False

str_num = "1234"
str_not_num = "12a4"

print(is_number(str_num))      # True
print(is_number(str_not_num))  # False

方法五:使用正则表达式

使用正则表达式可以更强大地判断字符串是否为数字。例如,可以通过正则表达式匹配字符串中只包含 0-9 的数字字符、包含小数点、包含正负号等情况。

示例代码:

import re

pattern_num = "^[0-9]+$"
pattern_float = "^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$"

str_num = "1234"
str_float = "-12.34"
str_not_num = "12a4"

print(re.match(pattern_num, str_num))     # <re.Match object; span=(0, 4), match='1234'>
print(re.match(pattern_num, str_not_num)) # None

print(re.match(pattern_float, str_float)) # <re.Match object; span=(0, 6), match='-12.34'>
print(re.match(pattern_float, str_not_num))# None

综上所述,以上是判断字符串是否为数字的几种常用方法,根据需要选择合适的方法即可。