簡體   English   中英

如何從具有多個值的 JSON 文件中提取數據

[英]How to extract data from the JSON file with multiple values

我有一個 JSON 數據文件,我能夠從中解析數據。 但是,當我嘗試如下解析主題部分時,我得到了多個用逗號分隔的條目。 有人可以幫我弄這個嗎? 我是 Python 的新用戶。

import json
data = json.loads(data)

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

Output:

{'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'])

Output:

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

有人可以幫我嗎?

因此,在您的示例中, topic1 和 topic2 都是字典中的鍵。 如果你想要這兩個值,你可以做......

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

這段代碼背后的想法是嵌套第二個循環並使用keys()方法獲取字典中該結構級別的鍵列表,如果有 top3、topic4 等,它也會找到它們.

您需要再次迭代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)        

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM