python - 检查字符串是否为仅表示为十进制数的 float

标签 python python-3.x floating-point

我正在编写脚本来检查一对数字是否是有效坐标。我需要检查数字是否仅以小数表示,并且经度范围为 0 到 180 正值或负值,纬度范围为 0 到 90 正值或负值。 我使用了 try/except block 来检查数字是否是这样的 float :

def isFloat(n):
    try:
       float(n)
       return True
    except ValueError:
       return False

虽然这大部分有效,但我希望它接受仅以小数表示的 float ,而不接受诸如 TrueFalse1e1NaN

最佳答案

您可以使用相当简单的 regular expression :

import re

def isFloat(n):
    n = str(n)  # optional; make sure you have string
    return bool(re.match(r'^-?\d+(\.\d+)?$', n))  # bool is not strictly necessary
    # ^         string beginning
    # -?        an optional -
    # \d+       followed by one or more digits (\d* if you want to allow e.g. '.95')
    # (\.\d+)?  followed by an optional group of a dot and one or more digits
    # $         string end

>>> isFloat('4')
True
>>> isFloat('4.567')
True
>>> isFloat('-4.567')
True
>>> isFloat('-4.')
False
>>> isFloat('-4.45v')
False
>>> isFloat('NaN')
False
>>> isFloat('1e1')
False

关于python - 检查字符串是否为仅表示为十进制数的 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41923280/

相关文章:

python - 如何使用 numpy.argsort() 作为二维以上的索引?

python - 使 cli python 代码与包管理器兼容

python - 在 OpenTelemetry 中传播顶级跨度 ID

在 xlib 上使用 ctypes 时出现 Python3 段错误,python2 有效

c - 意外结果,因为浮点减法变为 -0.0 和 +0.0

c++ - 在任何情况下都可以使用整数或 float ?

c - 使用`exp`进行受控舍入时是否存在错误?

Linux 中的 Python libgpiod 与 gpiod 软件包?

字符串序列的Python类型注释,但不是字符串?

python - 编写交叉兼容的 Python 2/3 : Difference between __future__, 六和 future.utils?