我正在尝试评估我的界面的一个文本框中的字符串是否为数字(即不是文本或其他任何内容)。在Python中,有一个名为isdigit()的方法,如果字符串只包含数字(没有负号或小数点),则返回True。如果我的字符串是一个有理数字(例如:1.25),还有另一种方法可以评估。
示例代码:
if self.components.txtZoomPos.text.isdigit():
step = int(self.components.txtZoomPos.text)
答案 0 :(得分:5)
1.25是reals常用的符号,rational numbers则较少。当转换失败时,Python的float会引发ValueError。因此:
def isReal(txt):
try:
float(txt)
return True
except ValueError:
return False
答案 1 :(得分:1)
try
/ catch
在Python中非常便宜,并且尝试从不是数字的字符串构造float
会引发异常:
>>> float('1.45')
1.45
>>> float('foo')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for float(): foo
您可以执行以下操作:
try:
# validate it's a float
value = float(self.components.txtZoomPos.text)
except ValueError, ve:
pass # your error handling goes here
答案 2 :(得分:1)
现有的答案是正确的,因为Pythonic的方式通常是try...except
(即EAFP)。
但是,如果您确实想要进行验证,则可以在使用isdigit()
之前删除正好1个小数点。
>>> "124".replace(".", "", 1).isdigit()
True
>>> "12.4".replace(".", "", 1).isdigit()
True
>>> "12..4".replace(".", "", 1).isdigit()
False
>>> "192.168.1.1".replace(".", "", 1).isdigit()
False
请注意,这并不会将浮点数视为与整数不同。如果你真的需要它,你可以添加那个检查。
答案 3 :(得分:0)
int()或float()会抛出ValueError
答案 4 :(得分:0)
float()
会抛出ValueError
。因此,尝试将您的字符串转换为float,并捕获ValueError
。