有没有办法在不使用try / except机制的情况下判断字符串是否表示整数(例如'3','-17'但不是'3.14'或'asfasfas')?
try / except
'3','-17'
'3.14'
'asfasfas'
is_int('3.14') = False is_int('-7') = True
如果你真的很讨厌在try/except各处使用s,请编写一个辅助函数:
try/except
def RepresentsInt(s): try: int(s) return True except ValueError: return False >>> print RepresentsInt("+123") True >>> print RepresentsInt("10.0") False
它将需要更多的代码来完全覆盖Python认为是整数的所有字符串。我说这是pythonic。
使用正整数可以使用.isdigit:
.isdigit
>>> '16'.isdigit() True
它不适用于负整数。假设你可以尝试以下操作:
>>> s = '-17' >>> s.startswith('-') and s[1:].isdigit() True
它不适用于'16.0'格式,int在这种意义上类似于强制转换。
'16.0'
编辑:
def check_int(s): if s[0] in ('-', '+'): return s[1:].isdigit() return s.isdigit()