我正在编写用于检查一对数字是否为有效坐标的脚本。我需要检查数字是否仅以小数表示,经度的范围是0到180正或负,纬度的范围是0到90正或负。
我使用了try / except块来检查数字是否像这样的浮点数:
def isFloat(n):
try:
float(n)
return True
except ValueError:
return False
尽管这大部分有效,但我希望它接受仅以小数表示的浮点数,而不接受
True
,False
,1e1
,NaN
之类的值 最佳答案
您可以使用一个非常简单的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