如何检查字符串是浮点数还是整数?

Posted

技术标签:

【中文标题】如何检查字符串是浮点数还是整数?【英文标题】:How do I check if a string is a float number or an integer number? 【发布时间】:2022-01-10 14:20:54 【问题描述】:

"1.0".isnumeric() -> 错误

我需要知道该字符串实际上是浮点数还是整数,因为尽管字符串实际上是浮点数,但 .isnumeric() 返回 False

【问题讨论】:

您的选择可能是:(a) 使用合适的正则表达式进行测试,或者 (b) 调用 float 并捕获任何 ValueError 异常。如果您搜索更多内容,很可能之前已经问过这个问题。 【参考方案1】:

您可以做的是使用ast.literal_eval 方法将字符串转换为其实际数据类型,然后使用isinstance 方法检查它是否为浮点数。

>>> import ast
>>> string = '1.0'
>>>
>>> num = ast.literal_eval(string)
>>> num
1.0
>>> isinstance(num,float)
True
>>>

同样的方法你可以检查它是否是一个整数。希望这能回答您的问题。

【讨论】:

【参考方案2】:

试试这个功能:

def is_numeric(some_string):
    try:
        float(some_string)
        return True
    except ValueError:
        return False


if __name__ == "__main__":
    print(is_numeric("123"))
    print(is_numeric("1.0"))
    print(is_numeric("1.0asd"))

输出:

True
True
False

【讨论】:

以上是关于如何检查字符串是浮点数还是整数?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查数字是浮点数还是整数? - How do I check that a number is float or integer?

python // 和 / 的区别是啥?

从 std::string 解析整数,但如果是浮点数则失败

python中1.0是浮点数还是整数

如何确定字典中的数字是str还是float? [复制]

python 除法