猿问

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

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

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

我目前的职能是:

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

这不仅是丑陋和缓慢,似乎笨重。但是,我没有找到更好的方法,因为调用float在主要功能上甚至更糟。


慕婉清6462132
浏览 745回答 4
4回答

阿晨1998

这不仅丑陋而且缓慢我会对两者都提出异议。regex或其他字符串解析方法将更丑陋和更慢。我不确定任何事情都能比上面的更快。它调用函数并返回。TRY/CATCH不会带来太多的开销,因为最常见的异常是在不对堆栈帧进行广泛搜索的情况下捕获的。问题是,任何数字转换函数都有两种结果。一个数字,如果该数字是有效的状态代码(例如,通过errno)或异常,以表明不能解析任何有效数字。C(举个例子)围绕着这个问题,有很多种方法。Python清楚而明确地列出了它。我觉得你的代码做得很好。

慕容森

您可能需要考虑一个例外:字符串‘nan’如果您希望is_number为‘nan’返回false,则此代码将无法工作,因为Python将其转换为非数字的表示(讨论标识问题):>>> float('NaN')nan否则,我实际上应该感谢您提供了我现在广泛使用的代码。*)g。
随时随地看视频慕课网APP

相关分类

Python
我要回答