我正在尝试从一些JSON数据中获取一个值。值存储在下面的键可以不同。我想同时支持两个版本。
我尝试执行条件语句来检查系统可能正在运行的版本。
if csv_json['com.revl.fileutils.LocalFileRef']['path'] != None :
csv_path = csv_json['com.revl.fileutils.LocalFileRef']['path']
else:
csv_path = csv_json['path']
如果我在与csv_json['com.revl.fileutils.LocalFileRef']['path']
格式兼容的系统上运行上述代码,则一切正常。如果我在支持csv_json['path']
格式的系统上运行它,则会失败并显示
File "main.py", line 51, in <module>
main()
File "main.py", line 38, in main
if csv_json['path'] != None :
KeyError: 'path'
当然,如果我翻转条件,也会得到相反的结果。
答案 0 :(得分:0)
尝试
if 'com.revl.fileutils.LocalFileRef' in csv_json:
甚至更好:
local_file_ref = csv_json.get('com.revl.fileutils.LocalFileRef')
if local_file_ref:
csv_path = local_file_ref['path']
else:
csv_path = csv_json['path']
如果找不到密钥,则.get()
的{{1}}方法将返回dict
(或您可以作为第二个参数传递的可选默认值)。
一个班轮版本可能是:
None