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

时间:2017-01-29 16:40:20

标签: python python-3.x floating-point

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

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

虽然这大部分都有效,但我希望它接受仅以小数表示的浮点数而不是TrueFalse1e1NaN

等值

1 个答案:

答案 0 :(得分:2)

您可以使用相当简单的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