检查字符串是否为实数

4 投票
7 回答
18614 浏览
提问于 2025-04-16 17:23

有没有什么简单的方法可以快速判断一个字符串是不是一个真正的数字?我不想一个字符一个字符地去检查,也不想用 isdigit() 来判断每个字符。我想测试一下像 0.03001 这样的浮点数。

7 个回答

1

还有一种方法是使用正则表达式:

import re

def is_float(str):
    if re.match(r"\d+\.*\d*", str):
        return True
    else:
        return False
8
>>> a = "12345" # good number
>>> int(a)
12345
>>> b = "12345G" # bad number
>>> int(b)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '12345G'

你可以这样做:

def isNumber(s):
    try:
        int(s)
    except ValueError:
        return False
    return True

如果你想要一个小数,记得把 int 改成 float (感谢 @cobbal)。

14

如果你说的浮点数是指实际的数字,这段代码应该可以用:

def isfloat(str):
    try: 
        float(str)
    except ValueError: 
        return False
    return True

需要注意的是,这段代码内部还是会循环处理你的字符串,但这是没办法避免的。

撰写回答