检查字符串是否仅以十进制数表示为浮点数



我正在编写脚本来检查一对数字是否是有效的坐标。我需要检查这些数字是否仅表示为小数,并且在经度为 0 到 180 的正负范围内,纬度的正数或负数为 0 到 90 的正数或负数。我使用 try/except 块来检查数字是否是浮点数,如下所示:

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

虽然这主要有效,但我希望它接受仅表示为小数的浮点数,而不是像 TrueFalse1e1NaN 这样的值

您可以使用一个相当简单的正则表达式:

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