【发布时间】:2021-09-23 05:44:27
【问题描述】:
我有 JSON 数据,我想在其中删除不必要的元素。我正在使用element.pop(),这很正常。但我想知道 JSON 中是否有数千个元素,而我的要求仅适用于 element0、element1 和 element6,那么我需要再次使用 element.pop()。
我们有什么东西,我不需要弹出所有不必要的元素吗?因为,如果我的要求只是 3 个元素,那么我需要 pop 数千个元素。这需要时间。
data.json
[
{
"fields": {
"element0": "val0",
"element1": "val1",
"element2": "val2",
"element3": "val3",
"element4": "val4",
"element5": "val5",
"element6": "val6"
}
},
{
"fields": {
"element0": "val0",
"element1": "val1",
"element2": "val2",
"element3": "val3",
"element4": "val4",
"element5": "val5",
"element6": "val6"
}
}
]
python 代码
import json
with open('data.json','r') as f:
s = f.read()
data = json.loads(s)
### my expectation
for element in data:
element['fields'].pop('element2', None)
element['fields'].pop('element3', None)
element['fields'].pop('element4', None)
element['fields'].pop('element5', None)
expected.json
[
{
"fields": {
"element0": "val0",
"element1": "val1",
"element6": "val6"
}
},
{
"fields": {
"element0": "val0",
"element1": "val1",
"element6": "val6"
}
}
]
【问题讨论】:
-
你为什么要
s = s.replace('\'','\"')???请注意,您的“json”根本不是 json。你可能应该解决这个问题 -
无论如何,我想,你可以选择你想要的元素,而不是弹出你不想要的元素......不确定你是不是这样问。
-
因为
JSONDecodeError: Expecting property name enclosed in double quotes。是的,这就是为什么我将 ' 替换为 "。[link][1] [1]: stackoverflow.com/questions/39491420/… -
嗯,准确地说,但这意味着它从来都不是 JSON。无论如何,这个问题完全没有必要?为什么要这样提供?您应该修复文件,而不是添加这个额外的解析元素。
-
谢谢,我的问题改了