Is there a built-in or more Pythonic way to try to parse a string to an integer(是否有内置或更多 Pythonic 方式来尝试将字符串解析为整数)
问题描述
在尝试将字符串解析为整数时,我必须编写以下函数才能正常失败.我想 Python 有内置的东西可以做到这一点,但我找不到它.如果没有,是否有一种更 Pythonic 的方式,不需要单独的函数?
I had to write the following function to fail gracefully when trying to parse a string to an integer. I would imagine Python has something built in to do this, but I can't find it. If not, is there a more Pythonic way of doing this that doesn't require a separate function?
def try_parse_int(s, base=10, val=None):
try:
return int(s, base)
except ValueError:
return val
我最终使用的解决方案是修改了@sharjeel 的答案.以下内容在功能上相同,但我认为更具可读性.
The solution I ended up using was a modification of @sharjeel's answer. The following is functionally identical, but, I think, more readable.
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"装饰器,它适用于各种抛出异常而不是优雅地失败的函数:
This is a pretty regular scenario so I've written an "ignore_exception" decorator that works for all kinds of functions which throw exceptions instead of failing gracefully:
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
这篇关于是否有内置或更多 Pythonic 方式来尝试将字符串解析为整数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:是否有内置或更多 Pythonic 方式来尝试将字符串解析为整数
基础教程推荐
- 比较两个文本文件以找出差异并将它们输出到新的文本文件 2022-01-01
- 对多索引数据帧的列进行排序 2022-01-01
- 在 Python 中将货币解析为数字 2022-01-01
- 在 Django Admin 中使用内联 OneToOneField 2022-01-01
- kivy 应用程序中的一个简单网页作为小部件 2022-01-01
- Kivy 使用 opencv.调整图像大小 2022-01-01
- Python 中是否有任何支持将长字符串转储为块文字或折叠块的 yaml 库? 2022-01-01
- Python,确定字符串是否应转换为 Int 或 Float 2022-01-01
- 究竟什么是“容器"?在蟒蛇?(以及所有的 python 容器类型是什么?) 2022-01-01
- matplotlib 设置 yaxis 标签大小 2022-01-01
