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

新手上路,请多包涵

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

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

上述工作,但它似乎笨重。


如果您正在测试的内容来自用户输入, 即使它代表 intfloat ,它 仍然 是一个字符串。请参阅 如何将输入读取为数字? 用于转换输入,并 询问用户输入,直到他们给出有效响应 以确保输入代表 intfloat (或其他要求),然后再继续。

原文由 Daniel Goldberg 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 524
2 个回答

这不仅丑陋而且缓慢

我对两者都有争议。

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

我不确定有什么比上述更快。它调用函数并返回。 Try/Catch 不会引入太多开销,因为最常见的异常是在没有大量搜索堆栈帧的情况下捕获的。

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

  • 一个数字,如果该数字有效
  • 一个状态码(例如,通过 errno)或异常表明没有有效的数字可以被解析。

C(例如)以多种方式解决了这个问题。 Python 清楚而明确地列出了它。

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

原文由 S.Lott 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

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


isdigit()Python2Python3

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

原文由 Zoomulator 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题