Python 如何检查字符串是否表示数字?

str.isdigit() 判断纯数字;含小数点/负号的用 try float(s) 捕获 ValueError;isnumeric/isdecimal 有细微差别。本文给出各方法对比与推荐写法。

最佳实践
Python 如何检查字符串是否表示数字?封面

纯整数用 s.isdigit();要兼容负数和小数用 try: float(s) 捕获异常——这是最全面的判断方式。

方法对比

"123".isdigit()     # True
"-123".isdigit()    # False(负号不认!)
"12.3".isdigit()    # False(小数点不认)

# 全面方案:try float
def is_number(s):
    try:
        float(s)
        return True
    except (ValueError, TypeError):
        return False

is_number("-12.3")   # True
is_number("1e5")     # True(科学计数法也是数字)
is_number("abc")     # False

isdigit / isdecimal / isnumeric 的区别

"²".isdigit()      # True(上标数字)
"⅓".isnumeric()    # True(分数字符)
"²".isdecimal()    # False

日常校验用户输入用 isdecimal 最严格,isnumeric 最宽松。

常见问题(FAQ)

Q:isinstance(s, int) 为什么不行? 那是判断对象类型——这里的前提是输入为字符串。

Q:校验后怎么转? 直接 int(s) 或 float(s),try 块里转换和判断一起完成。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台