如何使用python从JSON文件中删除一些条目?
我有一个JSON文件,如下所示:
json_data = [
{
"authType": "ldap",
"password": "",
"permissions": [
{
"collections": [
"aks9099",
"aks9098",
"aks9100",
"aks9101",
"aks9102",
"aks9103"
],
"project": "Central Project"
}
],
"role": "devSecOps",
"username": "chinq.n@example.com"
},
{
"authType": "ldap",
"password": "",
"permissions": [
{
"collections": [
"aks9099",
"aks9098",
"aks9100",
"aks9101",
"aks9102",
"aks9103"
],
"project": "Central Project"
}
],
"role": "devSecOps",
"username": "chinw.d@example.com"
},
{
"authType": "ldap",
"password": "",
"permissions": [
{
"collections": [
"aks9099",
"aks9098",
"aks9100",
"aks9101",
"aks9102",
"aks9103"
],
"project": "Central Project"
}
],
"role": "devSecOps",
"username": "chins.b@example.com"
},
{
"authType": "ldap",
"password": "",
"permissions": [
{
"collections": [
"aks9099",
"aks9098",
"aks9100",
"aks9101",
"aks9102",
"aks9103"
],
"project": "Central Project"
}
],
"role": "devSecOps",
"username": "chini.a@example.com"
}
]我想从列表中删除aks9098、aks9099和aks9103。预期结果应该如下所示:
[
{
"authType": "ldap",
"password": "",
"permissions": [
{
"collections": [
"aks9100",
"aks9101",
"aks9102"
],
"project": "Central Project"
}
],
"role": "devSecOps",
"username": "chinq.n@example.com"
},
{
"authType": "ldap",
"password": "",
"permissions": [
{
"collections": [
"aks9100",
"aks9101",
"aks9102"
],
"project": "Central Project"
}
],
"role": "devSecOps",
"username": "chinw.d@example.com"
},
{
"authType": "ldap",
"password": "",
"permissions": [
{
"collections": [
"aks9100",
"aks9101",
"aks9102"
],
"project": "Central Project"
}
],
"role": "devSecOps",
"username": "chins.b@example.com"
},
{
"authType": "ldap",
"password": "",
"permissions": [
{
"collections": [
"aks9100",
"aks9101",
"aks9102"
],
"project": "Central Project"
}
],
"role": "devSecOps",
"username": "chini.a@example.com"
}
]发布于 2022-11-29 11:13:35
您可以递归地分析输入数据并删除所有禁止的值:
def filter_data(data, forbidden_values):
if isinstance(data, str):
return data
if isinstance(data, dict):
return {
key: filter_data(value, forbidden_values) for key, value in data.items()
}
if isinstance(data, list):
return [
filter_data(value, forbidden_values)
for value in data
if value not in forbidden_values
]
forbidden_values = ["aks9098", "aks9099", "aks9103"]
filtered_data = filter_data(json_data, forbidden_values)https://stackoverflow.com/questions/74611405
复制相似问题