如何检查字符串是否为数字(浮点数)?

如何检查字符串是否可以在Python中表示为数字?

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

以上有效,但似乎很笨拙。


答案 1

仅对于非负(无符号)整数,请使用 isdigit()

>>> a = "03523"
>>> a.isdigit()
True
>>> b = "963spam"
>>> b.isdigit()
False

文档 : Python2Python3isdigit()

对于 Python 2 Unicode 字符串:isnumeric()


答案 2

这不仅是丑陋和缓慢的

我会对这两者提出异议。

正则表达式或其他字符串解析方法会更丑陋,更慢。

我不确定有任何东西可以比上面更快。它调用该函数并返回。Try/Catch 不会引入太多开销,因为最常见的异常是在未对堆栈帧进行广泛搜索的情况下捕获的。

问题是任何数字转换函数都有两种结果。

  • 数字(如果数字有效)
  • 状态代码(例如,通过 errno)或异常,以表明无法解析任何有效数字。

C(作为一个例子)通过多种方式对此进行了黑客攻击。Python清晰明确地阐述了它。

我认为你这样做的代码是完美的。