python - 是否有内置或更多 Pythonic 方式来尝试将字符串解析为整数

标签 python parsing integer

在尝试将字符串解析为整数时,我必须编写以下函数才能正常失败。我想 Python 有内置的东西可以做到这一点,但我找不到它。如果没有,是否有一种更 Pythonic 的方式,不需要单独的函数?

def try_parse_int(s, base=10, val=None):
  try:
    return int(s, base)
  except ValueError:
    return val

我最终使用的解决方案是修改了@sharjeel 的答案。以下内容在功能上相同,但我认为更具可读性。

def ignore_exception(exception=Exception, default_val=None):
  """Returns a decorator that ignores an exception raised by the function it
  decorates.

  Using it as a decorator:

    @ignore_exception(ValueError)
    def my_function():
      pass

  Using it as a function wrapper:

    int_try_parse = ignore_exception(ValueError)(int)
  """
  def decorator(function):
    def wrapper(*args, **kwargs):
      try:
        return function(*args, **kwargs)
      except exception:
        return default_val
    return wrapper
  return decorator

最佳答案

这是一个非常常规的场景,所以我编写了一个“ignore_exception”装饰器,它适用于各种抛出异常而不是优雅地失败的函数:

def ignore_exception(IgnoreException=Exception,DefaultVal=None):
    """ Decorator for ignoring exception from a function
    e.g.   @ignore_exception(DivideByZero)
    e.g.2. ignore_exception(DivideByZero)(Divide)(2/0)
    """
    def dec(function):
        def _dec(*args, **kwargs):
            try:
                return function(*args, **kwargs)
            except IgnoreException:
                return DefaultVal
        return _dec
    return dec

在您的情况下的用法:

sint = ignore_exception(ValueError)(int)
print sint("Hello World") # prints none
print sint("1340") # prints 1340

关于python - 是否有内置或更多 Pythonic 方式来尝试将字符串解析为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2262333/

相关文章:

python - 子进程调用

java - Antlr4 - 表示检查任意数量的标记的句法谓词

parsing - 左因式分解的自动语法转换;和左递归移除

python - 如何在 Python 3 中打印出编号列表

c++ - C++ 中的二进制文字

python - 以二进制打印整数张量

python - Pandas , future 警告:使用多个键进行索引

python 3.4 列表理解 - 在列表中调用临时变量

python - 如何使用 Python 读取 URL 的内容?

Java电子邮件消息解析器?