首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Python中打印JSON数据

如何在Python中打印JSON数据
EN

Stack Overflow用户
提问于 2021-02-11 02:09:19
回答 2查看 243关注 0票数 0

我正在尝试使用https://covid.ourworldindata.org/data/owid-covid-data.json打印每个国家的柯萨奇病毒病例列表

下面是我的代码:

代码语言:javascript
复制
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“中的数据,如”大陆“、”位置“等。但我想知道如何打印" data”-> "new_cases“

我只是在学习python,但是有没有类似于['AFG'.'data'.'new_cases']的语法可以用来打印案例呢?

将此扩展到整个JSON文件,我是否可以升级代码,以便不必指定每个国家的ID,而是使用通用的['country'.'data'.'new_cases']格式读取数据?

如果有人有什么建议,请告诉我

EN

回答 2

Stack Overflow用户

发布于 2021-02-11 02:16:55

这只显示"AFG“中的数据

如图所示,您的代码应该返回一个错误。

new_string['AFG']不起作用,因为您不能通过另一个字符串对一个字符串进行索引。换句话说,不需要json.dumpsdata是一个可以通过键建立索引的字典,您必须逐个迭代它们

e.g

代码语言:javascript
复制
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_case’的语法可以使用

您似乎想使用JSONPath,但我认为上面的解决方案具有足够的可读性

根据您的实际需要,在pandas中使用CSV数据集将更易于过滤和迭代

票数 0
EN

Stack Overflow用户

发布于 2021-02-11 02:45:12

还不清楚你到底想要做什么--数据跨越了几天。

此代码将向您显示数据涵盖的时间段内每个国家/地区的所有新病例的计数。

代码语言:javascript
复制
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}')

这将按日期列出每个国家/地区的新病例。

代码语言:javascript
复制
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}')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66142599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档