Python:识别数字字符串?

标签 python regex coercion

我尝试了几种方法,我真的只关心性能,而不是正确性。我注意到基于正则表达式的实现比使用类型强制的实现慢 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 中做同样事情的更好方法。

关于Python:识别数字字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2248185/

相关文章:

python - 在 python 中将应用程序与逻辑和相对导入分离

javascript - 调用 valueOf 时的操作顺序

JavaScript 强制 : Console vs Script

javascript - 字符串强制转换为 bool 值

c# - 如何在 Windows Phone 8.1 中阻止一个特定的键

javascript - ng-pattern 允许单词之间有空格

Python属性错误: module 'string' has no attribute 'maketrans'

python - Django 应用程序不从 AWS 存储桶的媒体文件夹加载图像

python - WTForms:如果数据存在,则用数据填充表单

python - 如何使用 python、html.parser 和正则表达式提取 url