我如何在不使用try/except的情况下检查字符串是否表示一个整数?

15 浏览
0 Comments

我如何在不使用try/except的情况下检查字符串是否表示一个整数?

有没有什么方法可以判断一个字符串是否表示一个整数(例如\'3\'\'-17\'而不是\'3.14\'\'asfasfas\')而不使用try/except机制?

is_int('3.14') == False
is_int('-7')   == True

admin 更改状态以发布 2023年5月21日
0
0 Comments

如果你只是因为在各个地方使用try/except而感到烦恼,请写一个辅助函数:

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


>>> print(represents_int("+123"))
True
>>> print(represents_int("10.0"))
False

要完全涵盖Python认为是整数的所有字符串,需要编写更多代码。我建议在这一点上遵循Python的风格。

0
0 Comments

对于正整数,您可以使用.isdigit函数:

>>> '16'.isdigit()
True

但对于负整数,这个函数就无效了。不过,您可以尝试以下方法:

>>> s = '-17'
>>> s.startswith('-') and s[1:].isdigit()
True

它不适用于'16.0'这样的格式,这与int类型转换类似。

编辑

def check_int(s):
    if s[0] in ('-', '+'):
        return s[1:].isdigit()
    return s.isdigit()

0