簡體   English   中英

如何在 Python 中打印 JSON 數據

[英]How to print JSON data in Python

我正在嘗試使用https://covid.ourworldindata.org/data/owid-covid-data.json打印每個國家/地區的 COVID 病例列表

這是我的代碼:

import json

f = open('covidData.json')

data = json.load(f)

new_string = json.dumps(data, indent =2)

for i in new_string['AFG']:
        print(i)
f.close()

這僅顯示“AFG”中的數據,例如“大陸”、“位置”等。但我想知道如何打印“數據”->“new_cases”

我只是在學習 python,但是是否有類似於['AFG'.'data'.'new_cases']語法可以用來打印案例?

將此擴展到整個 JSON 文件,我可以升級我的代碼,以便我不必指定每個國家/地區 ID,而是使用通用['country'.'data'.'new_cases']格式來讀取數據?

如果有人有任何建議,請告訴我

這僅顯示“AFG”中的數據

如圖所示,您的代碼應返回錯誤。

new_string['AFG']不起作用,因為您不能用另一個字符串索引一個字符串。 換句話說, json.dumps是不需要的, data是一個字典,你可以通過一個鍵索引,你必須一個接一個地迭代它們

例如

for country_code, info in data.items():
  for country_info in info['data']:
    print('{}\t{}\t{}'.format(country_info['date'], info['location'], country_info['new_cases']))

我可以使用類似於 ['AFG'.'data'.'new_cases'] 的語法嗎

似乎您想使用JSONPath ,但我認為上述解決方案足夠可讀


根據您的確切需求,在 pandas 中使用 CSV 數據集將更容易過濾和迭代

目前尚不清楚您想要做什么 - 數據跨越數天。

此代碼將向您顯示數據涵蓋的時間段內每個國家/地區的所有新病例數。

import json

with open('owid-covid-data.json') as data_file:
  covid_data = json.load(data_file)

for country in covid_data.keys():
  country_data = covid_data[country]
  location = country_data['location']
  cases_data = country_data['data']
  total_new_cases = 0
  for data in cases_data:
    total_new_cases += data.get('new_cases',0)

  print(f'{location} - {total_new_cases}')

這將按日期列出每個國家/地區的新病例。

import json

with open('owid-covid-data.json') as data_file:
  covid_data = json.load(data_file)

for country in covid_data.keys():
  country_data = covid_data[country]
  location = country_data['location']
  cases_data = country_data['data']
  total_new_cases = 0

  for data in cases_data:
    new_cases = data.get('new_cases',0)
    report_date = data['date']
    print(f'{location} - {report_date} - {new_cases}')

暫無
暫無

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

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