我试图从JSON API中获取一些数据。我不想要API返回的所有数据,所以我编写了一个方法来读取所有数据,并返回带有相关字段的字典。有时候,有些数据丢失了,我想用下划线替换丢失的字段。该方法的一个例子就是这样的;如何以编程方式捕获尝试块上的哪个命令失败
return {
'foo': data['foo'],
'bar': data['bar']
}
如果数据中缺少一个字段,则会通过KeyError。是否有可能在一个try-except块中以编程方式捕获哪个字段产生错误,而不是为每个字段写一个try-except块?
try:
ret_dict = {
'foo': data['foo'],
'bar': data['bar']
}
except KeyError:
ret_dict[thefailurekey] = '_'
,而不是
ret_dict = {}
try:
ret_dict['foo'] = data['foo']
except KeyError:
ret_dict['foo'] = '_'
try:
ret_dict['bar'] = data['bar']
except:
ret_dict['bar'] = '_'
谢谢
谢谢你的回答。如果这个领域本身就是一本字典,我应该如何使用它; data.get('foo',{})。get('bar','_')还是有更好的pythonic方法? – jzlas
是的,这是一条路。虽然如果你想要一个更通用的方法,看看这个答案http://stackoverflow.com/a/36131992/847552。 – skovorodkin
谢谢你,太棒了。没有得到比这更pythonic! – jzlas