如何使用多个值从JSON文件中提取数据

2024-06-16 13:41:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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

有人能帮我吗


Tags: datavaluecodeitempreproductsotherchanges
2条回答

您需要再次迭代item['Topics']以获得嵌套级别的字典值,从而从输入中获得类似的结果

您可以尝试以下方法:


for item in data['GetSignificantDevelopments_Response_1']['FindResponse']['Development']:
    for topic, topic_value in item['Topics'].items():
        print(topic_value['Value'])

根据评论编辑


for item in data['GetSignificantDevelopments_Response_1']['FindResponse']['Development']:
    res = ''
    for topic, topic_value in item['Topics'].items():
        res = res + ', ' + topic_value['Value']
    res = res[2:]  # To remove unwanted ', ' at index 0,1
    print(res)        

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

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

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

相关问题 更多 >