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

新手上路,请多包涵

Is there any way to tell whether a string represents an integer (eg, '3' , '-17' but not '3.14' or 'asfasfas' ) Without using尝试/排除机制?

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

原文由 Adam Matan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 306
2 个回答

如果你真的只是对到处使用 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。

原文由 Kenan Banks 发布,翻译遵循 CC BY-SA 2.5 许可协议

对于正整数,您可以使用 .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()

原文由 SilentGhost 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题