如何检查字符串是否表示数字(浮点数或整数)?

59 浏览
0 Comments

如何检查字符串是否表示数字(浮点数或整数)?

如何在Python中检查一个字符串是否代表一个数值?

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

上面的方法可以工作,但它看起来有点笨重。


如果你要测试的内容来自用户输入,即使它表示一个intfloat,它仍然是一个字符串。请参见如何将输入读取为数字?来转换输入,并参见要求用户输入,直到他们给出有效的响应来确保输入代表一个intfloat(或其他要求)然后再进行操作。

admin 更改状态以发布 2023年5月22日
0
0 Comments

这不仅难看而且很慢

我不同意这两点。

使用正则表达式或其他字符串解析方法会更难看和更慢。

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

问题在于任何数值转换函数都有两种结果:

  • 如果数字有效,则为数字
  • 如果无法解析有效数字,则为状态码(例如通过errno)或异常。

例如,在C中,可以通过多种方式解决这个问题。Python清楚而明确地展现了它。

我认为您用于此的代码是完美的。

0
0 Comments

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

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


isdigit()的文档:Python2Python3

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

0