首先我知道如何讀取 .JSON 檔案,但現在我很困惑如何洗掉部分嵌套。如您所見,我使用clear()方法清除嵌套的 JSON,為什么?當我想使用remove(i)時,它可以作業,但不會洗掉我想要的,只是讓 JSON 檔案出錯之前
{"dump data": [
{
"dump detail": [
{
"dumper": "MorpKnight",
"title": "test"
}
]
},
{
"dump detail": [
{
"dumper": "MorpKnight",
"title": "test 2"
}
]
}
]
}
之后(我想要的結果)
{"dump data": [
{
"dump detail": [
{
"dumper": "MorpKnight",
"title": "test"
}
]
}
這是我的代碼
data_name = input("Search data")
with open('config.json', "r ") as file:
json_load = json.load(file)
for i in json_load['dump data']:
for j in i['dump detail']:
if j['title'] == data_name:
i.clear()
print("Deleted")
return
uj5u.com熱心網友回復:
您不能在迭代串列時從串列中洗掉專案,這是一個壞主意,除非您反過來這樣做,但它仍然沒有效率。
然而,這應該有效:
import json
data_name = input("Search data")
with open('config.json', "r ") as file:
json_load = json.load(file)
new_details = []
for detail in json_load['dump data']:
if all(data['title'] != data_name for data in detail['dump detail']):
new_details.append(detail)
json_load['dump data'] = new_details
我根據您的規范重新創建詳細資訊串列。然后,您可以根據需要保存json_load回檔案中。
uj5u.com熱心網友回復:
data = {"dump data": [
{
"dump detail": [
{
"dumper": "MorpKnight",
"title": "test"
}
]
},
{
"dump detail": [
{
"dumper": "MorpKnight",
"title": "test 2"
}
]
}
]
}
def clean(data, data_name):
data_clean = {'dump data': []}
for i, e in enumerate(data['dump data']):
if e['dump detail'][0]['title'] != data_name:
data_clean['dump data'] = e
return data_clean
data_name = input("Search data: ")
data_clean = clean(data, data_name)
print(data_clean)
印刷
Search data: test 2
{'dump data': [{'dump detail': [{'dumper': 'MorpKnight', 'title': 'test'}]}]}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/463399.html
上一篇:如何將字串轉換為字典串列?
