Python-如何在不使用try / except的情况下检查字符串是否表示int?
有没有办法在不使用try / except
机制的情况下判断字符串是否表示整数(例如'3','-17'
但不是'3.14'
或'asfasfas'
)?
is_int('3.14') = False
is_int('-7') = True
-
如果你真的很讨厌在
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。
-
使用正整数可以使用
.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()