[英]How can I use if/else in a nested dictionary (JSON - File)?
我有一個 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。 也許有人可以幫助我:)
我認為這可能是錯字的結果,而不是您的代碼有任何問題:您在其中一個字典中將“enriched”拼寫為“enrichd”,因此 python 會引發KeyError
,因為您的代碼中沒有“enriched”字典。 糾正錯誤應該是一個簡單的修復。
關於解析,比如說,字符串xy2
中的數字 2,最簡單的方法是使用.strip(“xy”)
(盡管這僅在 integer 之前的字符始終相同時才有效。)
編輯:使用條帶 function。 剝離字符串只是從字符串的結尾和開頭刪除指定的 substring。 因此,如果我有字符串”Hello world”
,我會 go ”Hello world”.strip(“Hello”)
它將從一開始就“剝離”單詞 Hello。 如果我做了“area”.strip(“a”)
,它會返回“re”,因為 a 已經從每一端刪除了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.