一尘不染

Python-如何在不使用try / except的情况下检查字符串是否表示int?

python

有没有办法在不使用try / except机制的情况下判断字符串是否表示整数(例如'3','-17'但不是'3.14''asfasfas')?

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

阅读 674

收藏
2020-02-14

共2个答案

一尘不染

如果你真的很讨厌在try/except各处使用s,请编写一个辅助函数:

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

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

它将需要更多的代码来完全覆盖Python认为是整数的所有字符串。我说这是pythonic。

2020-02-14
一尘不染

使用正整数可以使用.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()
2020-02-14