gpt4 book ai didi

json - python 从 json 中提取特定的键和值不起作用

转载 作者:行者123 更新时间:2023-12-03 18:14:49 25 4
gpt4 key购买 nike

我正在尝试使用 Python 从 Windows 中的 json 中提取特定的键和值。

我想使用 dumps 命令,但找不到合适的示例。

**更新数据:json 文件的摘录是(但文件很长):

   {
"CVE_data_type" : "CVE",
"CVE_data_format" : "MITRE",
"CVE_data_version" : "4.0",
"CVE_data_numberOfCVEs" : "64",
"CVE_data_timestamp" : "2020-01-09T08:00Z",
"CVE_Items" : [ {
"cve" : {
"data_type" : "CVE",
"data_format" : "MITRE",
"data_version" : "4.0",
"CVE_data_meta" : {
"ID" : "CVE-2020-0001",
"ASSIGNER" : "cve@mitre.org"
},
"problemtype" : {
"problemtype_data" : [ {
"description" : [ ]
} ]
},
"references" : {
"reference_data" : [ {
"url" : "https://source.android.com/security/bulletin/2020-01-01",
"name" : "https://source.android.com/security/bulletin/2020-01-01",
"refsource" : "CONFIRM",
"tags" : [ ]
} ]
},
"description" : {
"description_data" : [ {
"lang" : "en",
"value" : "In getProcessRecordLocked of ActivityManagerService.java isolated apps are not handled correctly. This could lead to local escalation of privilege with no additional execution privileges needed. User interaction is not needed for exploitation. Product: Android Versions: Android-8.0, Android-8.1, Android-9, and Android-10 Android ID: A-140055304"
} ]
}
},
"configurations" : {
"CVE_data_version" : "4.0",
"nodes" : [ ]
},
"impact" : { },
"publishedDate" : "2020-01-08T19:15Z",
"lastModifiedDate" : "2020-01-08T20:01Z"
}, {
"cve" : {
"data_type" : "CVE",
"data_format" : "MITRE",
"data_version" : "4.0",
"CVE_data_meta" : {
"ID" : "CVE-2020-0002",
"ASSIGNER" : "cve@mitre.org"
},
"problemtype" : {
"problemtype_data" : [ {
"description" : [ ]
} ]
},
"references" : {
"reference_data" : [ {
"url" : "https://source.android.com/security/bulletin/2020-01-04",
"name" : "https://source.android.com/security/bulletin/2020-01-04",
"refsource" : "CONFIRM",
"tags" : [ ]
} ]
},
"description" : {
"description_data" : [ {
"lang" : "en",
"value" : "In ih264d_init_decoder of ih264d_api.c, there is a possible out of bounds write due to a use after free. This could lead to remote code execution with no additional execution privileges needed. User interaction is needed for exploitation Product: Android Versions: Android-8.0, Android-8.1, Android-9, and Android-10 Android ID: A-142602711"
} ]
}
},
"configurations" : {
"CVE_data_version" : "4.0",
"nodes" : [ ]
},

...

我需要提取 ID 和描述。

我试过了

for key, value in json.dumps(cve_dict['CVE_Items'][0], sort_keys=True, indent=4, separators=',', ': ')):
#if(key in ['ID', 'description']):
print(key, value)

但是我得到这个错误:

  File "unzip_get_info.py", line 19
for key, value in json.dumps(cve_dict['CVE_Items'][0], sort_keys=True, indent=4, separators=',', ': ')):
^
SyntaxError: invalid syntax

我可以打印出整个 json:

print(json.dumps(cve_dict['CVE_Items'][0], sort_keys=True, indent = 4, separators=(',', ': ')))

我不是一个大 Python 程序员。知道如何获取 ID 和描述的键/值吗?我尝试直接使用 cve_dict 进行操作,但错误是我无法直接进行操作。

非常感谢您的帮助。这是我的第一个 Python 程序。

我正在尝试弄清楚如何用这个 link 处理转储,但我没有看到它。我看了this too ,但我不确定。

**更新:我试过了

for key, value in cve_dict['CVE_Items'][0].items():
if(key in ['ID', 'description']):
print(key, value)

尝试将其限制为 ID 和描述,除了下面建议的内容之外,但它没有打印任何内容。我知道 ID 和描述在那里(见上面的 json)。如何只打印 ID 和描述,而不是所有键/值?

最佳答案

当字典本身很容易遍历时,您不应该将字典转换为 JSON 字符串。只需使用以下方法访问 ID 键的所需值:

cve_dict['CVE_Items'][0]['cve']['CVE_data_meta']['ID']

如果您想要所有 ID,您可以使用 for 循环遍历列表项:

for item in cve_dict['CVE_Items']:
print(item['cve']['CVE_data_meta']['ID'])

关于json - python 从 json 中提取特定的键和值不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59656343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com