如何在嵌套字典(JSON-File)中使用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"}   
}

]

其中我必须过滤来自"0"的嵌套条目的数目;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。也许有人可以帮我:(

我认为这可能是拼写错误的结果,而不是你的代码有什么问题:你在一个dict中把"riched"错写成了"enrichd",因此python会引发一个KeyError,因为你的dict中没有"enriched"。纠正错误应该是一个简单的修复。

关于解析的主题,比如字符串xy2中的数字2,最简单的方法是使用.strip(“xy”)(尽管只有当整数之前的字符总是相同时,这才有效。(

编辑:使用条形图功能。剥离字符串只需从字符串的末尾和开头删除指定的子字符串。所以,如果我有字符串”Hello world”,我会去”Hello world”.strip(“Hello”),它会从一开始就"去掉"单词Hello。如果我执行“area”.strip(“a”),它将返回"re",因为a已从每一端删除。

最新更新