Skip to main content
 首页 » 编程设计

Python:识别数字字符串

2025年05月04日19think

我尝试了几种方法,我真的只关心性能,而不是正确性。我注意到基于正则表达式的实现比使用类型强制的实现慢 3-4 倍。还有其他更有效的方法吗?

def IsNumber(x): 
    try: 
        _ = float(x) 
    except ValueError: 
        return False 
    return True 
 
 def IsNumber2(x): 
     import re 
     if re.match("^\d*.?\d*$", x) == None: 
         return False 
     return True 

谢谢!

请您参考如下方法:

首先,他们做的不是同一件事。例如, float 可以指定为“1e3”,而 float() 将接受它。它也不是 coercion , 但转化。

其次,不要在 IsNumber2 中导入 re,尤其是当您尝试将它与 timeit 一起使用时。在函数之外进行导入。

最后,float() 更快并不让我感到惊讶。这是一个用 C 语言编写的用于特定目的的专用例程,而正则表达式必须转换为可解释的形式。

您使用 float() 的第一个版本是否足够快?它应该是,而且我不知道在 Python 中做同样事情的更好方法。