python - 如何在嵌套字典(JSON - 文件)中使用 if/else?
问题描述
我有一个 JSON 文件:
[
{
"schema":{"id":1},
"rawdata":{},
"enriched":{"name":"xy1"}
},
{
"schema":{"id":2},
"rawdata":{},
"enriched":{"name":"xy2"}
},
{ "schma":{"id":3}, "radata":{},"enrichd":{"name":"xy3"}
},
{ "schema":{"id":3}, "radata":{},"enriched":{"name":"xy3"}
},
{"name":"xy200"},
{
"schema":{"id":4},
"rawdata":{},"enriched":{"name":"xy4"}
}
]
我必须从“name”中过滤嵌套条目的数量:“xy1”。简而言之:我需要“xy”之后的每个数字。
我已经写的代码是这样的:
for value in data:
if value["enriched"]:
get_char = value["enriched"]["name"]
num = get_char[2:]
print(f"{num}")
elif value["enrichd"]:
get_char = value["enrichd"]["name"]
num = get_char[2:]
print(f"{num}")
elif value["name"]:
get_char = value["name"]
num = get_char[2:]
print(f"{num}")
else:
print("test")
我的错误信息是这样的:
1
2
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-155-13d4f2ca308f> in <module>
52 for value in data:
53 try:
---> 54 if value["enriched"]:
55 get_char = value["enriched"]["name"]
56 num = get_char[2:]
KeyError: 'enriched'
但我不明白为什么我的循环不使用我写的 elif。也许有人可以帮助我:)
解决方案
推荐阅读
- javascript - 扩展 JS 以显示视点
- prisma - 无法在 Prisma 中创建多个连接查询?
- android - 设置启动画面的任何替代方法?
- sql - 如何将多个参数值传递到 loadrunner 中的 SQLQuery
- button - 如何创建一个在没有自动注册/创建表单odoo13的情况下打开弹出窗口的按钮
- python - 如何同步python线程的启动时间?
- css - 禁用时更改文本文件的颜色
- python - `G` 类型的 python % 字符串格式如何表现?
- go - 什么是 shell 中 test -x 的 golang 等价物?
- html - 在 Xaringan Rmarkdown 演示文稿中使用 introjs