7

我正在尝试做应该非常简单的事情,并检查Entry字段中的值是否是有效的实数。该str.isnumeric()方法不考虑“-”负数或“.”。十进制数。

我尝试为此编写一个函数:

def IsNumeric(self, event):
    w = event.widget
    if (not w.get().isnumeric()):
        if ("-" not in w.get()):
            if ("." not in w.get()):
                w.delete(0, END)
                w.insert(0, '')

这工作得很好,直到你回去在那里输入字母。然后它失败了。

我研究了使用该.split()方法的可能性,但我找不到可靠的正则表达式来处理它。

这是一件非常正常的事情,需要做。有任何想法吗?

4

3 回答 3

18
try:
    float(w.get())
except ValueError:
    # wasn't numeric
于 2015-06-15T21:36:59.970 回答
3

听起来您可能只需要知道传递某个字符串是否float会给出结果(即它是一个很好的数值),还是错误(即字符串不代表数字)。尝试这个:

def isnum(s):
    try:
        float(s)
    except:
        return(False)
    else:
        return(True)
于 2015-06-15T21:51:31.787 回答
0

我意识到这是一个老问题,但我刚刚遇到了这个问题。您可以执行以下操作:

if re.sub("[^0-9\\-\\.]", "", "-0.18"):
于 2022-01-17T17:41:24.510 回答