如何在不进行字符串解析的情况下解析 Python 中的 ValueError?
How to parse a ValueError in Python without string parsing?
我是 运行 一名编程人员并得到预期的 ValueError 输出:
ValueError: {'code': -123, 'message': 'This is the error'}
我不知道如何解析这些数据,只能获取代码(或消息)值。我怎样才能得到 ValueError 的 code
值?
我试过以下方法:
e.code
AttributeError: 'ValueError' object has no attribute 'code'
e['code']
TypeError: 'ValueError' object is not subscriptable
json.loads(e)
TypeError: the JSON object must be str, bytes or bytearray, not 'ValueError'
这样做的 pythonic 方式是什么?
编辑
做的一件事是获取字符串索引,但我不想这样做,因为我觉得它不是很pythonic。
您应该直接从字典中获取 values()
而不是 e
。试试这个:
try:
ValueError= {'code': -123, 'message': 'This is the error'}
Value = ValueError.get('code')
print Value
except Exception as e:
pass
ValueError
exception class have an args
属性是 tuple
给异常构造函数的参数。
>>> a = ValueError({'code': -123, 'message': 'This is the error'})
>>> a
ValueError({'code': -123, 'message': 'This is the error'})
>>> raise a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: {'code': -123, 'message': 'This is the error'}
>>> dir(a) # removed all dunder methods for readability.
['args', 'with_traceback']
>>> a.args
({'code': -123, 'message': 'This is the error'},)
>>> a.args[0]['code']
-123
ValueError 是字典类型。
所以你可以使用
e.get("key")
到达字典中的任何字段。
我是 运行 一名编程人员并得到预期的 ValueError 输出:
ValueError: {'code': -123, 'message': 'This is the error'}
我不知道如何解析这些数据,只能获取代码(或消息)值。我怎样才能得到 ValueError 的 code
值?
我试过以下方法:
e.code
AttributeError: 'ValueError' object has no attribute 'code'
e['code']
TypeError: 'ValueError' object is not subscriptable
json.loads(e)
TypeError: the JSON object must be str, bytes or bytearray, not 'ValueError'
这样做的 pythonic 方式是什么?
编辑
做的一件事是获取字符串索引,但我不想这样做,因为我觉得它不是很pythonic。
您应该直接从字典中获取 values()
而不是 e
。试试这个:
try:
ValueError= {'code': -123, 'message': 'This is the error'}
Value = ValueError.get('code')
print Value
except Exception as e:
pass
ValueError
exception class have an args
属性是 tuple
给异常构造函数的参数。
>>> a = ValueError({'code': -123, 'message': 'This is the error'})
>>> a
ValueError({'code': -123, 'message': 'This is the error'})
>>> raise a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: {'code': -123, 'message': 'This is the error'}
>>> dir(a) # removed all dunder methods for readability.
['args', 'with_traceback']
>>> a.args
({'code': -123, 'message': 'This is the error'},)
>>> a.args[0]['code']
-123
ValueError 是字典类型。 所以你可以使用 e.get("key") 到达字典中的任何字段。