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

检查一个字符串是否可以在Python中表示为数字的最佳方法是什么?

我现在有的功能是:

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

这不仅丑陋而且缓慢,看起来笨重。 但是我没有找到更好的方法,因为在主函数中调用float更糟。


这不仅丑陋而且缓慢

我会同时争执。

正则表达式或其他字符串解析会更慢更慢。

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

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

  • 一个数字,如果该数字有效
  • 状态码(例如,通过errno)或例外,以显示无法解析任何有效号码。
  • C(作为一个例子)以多种方式解决这个问题。 Python清楚而明确地阐述了它。

    我认为你的代码是完美的。


    如果您正在寻找解析(正数,无符号)整数而不是浮点数,则可以对字符串对象使用isdigit()函数。

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

    字符串方法 - isdigit()

    还有一些Unicode字符串,我不太熟悉Unicode - 十进制/十进制


    有一个例外,你可能要考虑:字符串'NaN'

    如果您希望is_number为'NaN'返回FALSE,则此代码将不起作用,因为Python会将其转换为不是数字的数字表示形式(谈论身份问题):

    >>> float('NaN')
    nan
    

    否则,我应该真的感谢你为我现在广泛使用的那段代码。 :)

    G。

    链接地址: http://www.djcxy.com/p/3555.html

    上一篇: How do I check if a string is a number (float)?

    下一篇: Convert String to double in Java