如何使用if条件判断python中的字符串是int还是float



我得到了不同的字符串,有些是数字,例如:"1〃"afd76〃"dddd"521129";以及";0.1423105";。我需要检查它们是否是有效的数字,然后才能继续。在上面的例子中,所有的都是除了"0"之外的数字;afd76〃;以及";dddd";。

isdigit和isnumeric不会这样做,因为它们只能验证字符串是否为int,例如:

"3".isdigit() is true but "3.0".isdigit() is false
"3".isnumeric() is true but "3.0".isnumeric() is false 

除了强制铸造和根据异常情况决定要做什么之外,还有什么优雅的方法可以进行此检查吗?

您可以尝试将字符串强制转换为float:

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

示例:

>>> is_number('123')
True
>>> is_number('123a')
False
>>> is_number('123.12')
True
>>> is_number('3.0')
True

最新更新