python 3 的可靠 isnumeric() 函数是什么?

What is a reliable isnumeric() function for python 3?

我正在尝试做一些应该非常简单的事情,并检查 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() 方法的可能性,但我找不到可靠的正则表达式来处理它。

这是一件非常正常的事情,需要完成。有什么想法吗?

try:
    float(w.get())
except ValueError:
    # wasn't numeric

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

def isnum(s):
    try:
        float(s)
    except:
        return(False)
    else:
        return(True)

我意识到这是一个老问题,但我刚刚遇到了这个问题。 你可以这样做:

if re.sub("[^0-9\-\.]", "", "-0.18"):