簡體   English   中英

如何在嵌套字典(JSON - 文件)中使用 if/else?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM