试图解析深度嵌套的json,最多10个元素,当字典中没有键时如何处理异常?
d = json.loads(file)
print(
d['date'],
d['тип'],
d['инн'],
d['кпп'],
d['огрн'],
d['имяПолное'],
d['имяКраткое'],
d['оснВидДеятельности']['код'],
d['оснВидДеятельности']['наим'],
d['свАдрес']['адресРФ']['кодАдрКладр']
) 例如,没有最后一个元素(可能在另一个文件中),我得到一个错误:
d['свАдрес']['адресРФ']['кодАдрКлад']
KeyError: 'кодАдрКлад'
本来想写一个handler,结果不太好,还是一样的错误
def get_err(s):
try:
return s
except:
return ''
我在打印中显示所有内容以进行调试,理想情况下,您需要将键值收集在带有分隔符的字符串中;用于后续导入数据库
要通过 key 或 返回一个值
None,您可以使用d.get('тип').要在嵌套键列表给定的指定路径处返回值:
示例:
get_by_path(d, 'оснВидДеятельности', 'код')或:您需要在访问密钥时捕获异常,即:
你可以这样做:
当通过不存在的键访问时,它返回一个空对象。支持任意嵌套,即使在一个不存在的键之后还有几个子键。
当通过打印输出或转换为字符串时,空对象显示为 None。
我手上写的,所以可能还需要完成和调试一些东西,但总的来说,原理是这样的。
您可以不处理异常,而是为不存在的键设置默认值:
最后,我决定这样做,也许对某人有用:
将密钥作为列表传递。