首页 > 解决方案 > 如何从具有多个值的 JSON 文件中提取数据

问题描述

我有一个 JSON 数据文件,我能够从中解析数据。但是,当我尝试如下解析主题部分时,我得到了多个以逗号分隔的条目。有人可以帮我弄这个吗?我是 Python 新手。

import json
data = json.loads(data)

for item in data['GetSignificantDevelopments_Response_1']['FindResponse']['Development']:
    print(item['Topics'])

输出:

{'Topic1': {'Code': '201', 'Value': 'Products'}}
{'Topic1': {'Code': '207', 'Value': 'Mergers / Acquisitions'}}
{'Topic1': {'Code': '210', 'Value': 'Officer Changes'}}
{'Topic1': {'Code': '252', 'Value': 'Other Pre-Announcement'}}
{'Topic1': {'Code': '245', 'Value': 'Earnings Announcements'}}
{'Topic1': {'Code': '245', 'Value': 'Earnings Announcements'}}
{'Topic1': {'Code': '252', 'Value': 'Other Pre-Announcement'}}
{'Topic1': {'Code': '253', 'Value': 'Strategic Combinations'}}
{'Topic1': {'Code': '213', 'Value': 'Divestitures / Spin-offs'}, 'Topic2': {'Code': '264', 'Value': 'Product Responsibility'}}
{'Topic1': {'Code': '265', 'Value': 'Community'}}

当我运行以下脚本时,它给了我:

for item in data['GetSignificantDevelopments_Response_1']['FindResponse']['Development']:
    print(item['Topics']['Topic1']['Value'])

输出:

Products
Mergers / Acquisitions
Officer Changes
Other Pre-Announcement
Earnings Announcements
Earnings Announcements
Other Pre-Announcement
Strategic Combinations
Divestitures / Spin-offs
Community

相反,我希望结果是这样的。

Products
Mergers / Acquisitions
Officer Changes
Other Pre-Announcement
Earnings Announcements
Earnings Announcements
Other Pre-Announcement
Strategic Combinations
Divestitures / Spin-offs,Product Responsibility
Community

有人可以帮我吗?

标签: pythonjson

解决方案


因此,在您的示例中, topic1 和 topic2 都是字典中的键。如果你想要这两个值,你可以这样做......

for item in data['GetSignificantDevelopments_Response_1']['FindResponse']['Development']:
    for entry in item['Topics'].keys():
        print(item[entry]['Value'])

这段代码背后的想法是嵌套第二个循环并使用这些keys()方法在结构的该级别获取字典中的键列表,这样如果有 top3、topic4 等,它也会找到它们。


推荐阅读