如何检查字符串是否是数字(浮点数)?
检查一个字符串是否可以在Python中表示为数字的最佳方法是什么?
我现在有的功能是:
def is_number(s):
try:
float(s)
return True
except ValueError:
return False
这不仅丑陋而且缓慢,看起来笨重。 但是我没有找到更好的方法,因为在主函数中调用float
更糟。
这不仅丑陋而且缓慢
我会同时争执。
正则表达式或其他字符串解析会更慢更慢。
我不确定有什么比以上更快。 它调用函数并返回。 Try / Catch不会引入太多开销,因为最常见的异常是在没有广泛搜索堆栈帧的情况下捕获的。
问题是任何数字转换函数都有两种结果
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