想法:
應該加載一個 JSON 檔案,并且2-uID應該洗掉帶有子項的物件。編輯后的內容應保存在同一個 JSON 檔案中。
問題:
我已經嘗試了幾種方法,比如來自 SO 用戶的這種方法,但對我來說還沒有任何效果。
顯示的代碼不會洗掉任何內容,而是將內容全部推入一行。
當前代碼
Python代碼:
import json
with open("path/to/json") as data_file:
data = json.load(data_file)
for element in data:
if '2-uID' in element:
del element['2-uID']
with open("path/to/json", 'w') as data_file:
data = json.dump(data, data_file)
JSON 檔案:
{
"uID": {
"1-uID": {
"username": "1-username",
"pinned": true
},
"2-uID": {
"username": "2-username",
"pinned": false
},
"3-uID": {
"username": "3-username",
"pinned": false
}
}
}
這是該程序后 JSON 檔案的樣子:
{
"uID": {
"1-uID": {
"username": "1-username",
"pinned": true
},
"3-uID": {
"username": "3-username",
"pinned": false
}
}
}
uj5u.com熱心網友回復:
編輯:
這是你的問題:
for element in data:
if '2-uID' in element:
del element['2-uID']
data是頂級元素,所以它只有一個鍵:“uID”。嘗試列印出“元素”:)
也許我誤解了你,但你不應該使用del嗎?
這對我有用
# string holding the JSON object
s = r"""{
"uID": {
"1-uID": {
"username": "1-username",
"pinned": true
},
"2-uID": {
"username": "2-username",
"pinned": false
},
"3-uID": {
"username": "3-username",
"pinned": false
}
}
}"""
import json
j = json.loads(s)
# remove one of the elements
del j["uID"]["2-uID"]
# see that the element is now gone
print(j)
# output:
# {'uID': {'2-uID': {'pinned': False, 'username': '2-username'},
# '3-uID': {'pinned': False, 'username': '3-username'}}}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/390500.html
下一篇:基于列串列對資料進行分組和聚合
