我正在尝试使用https://covid.ourworldindata.org/data/owid-covid-data.json打印每个国家的柯萨奇病毒病例列表
下面是我的代码:
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']格式读取数据?
如果有人有什么建议,请告诉我
发布于 2021-02-11 02:16:55
这只显示"AFG“中的数据
如图所示,您的代码应该返回一个错误。
new_string['AFG']不起作用,因为您不能通过另一个字符串对一个字符串进行索引。换句话说,不需要json.dumps,data是一个可以通过键建立索引的字典,您必须逐个迭代它们
e.g
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数据集将更易于过滤和迭代
发布于 2021-02-11 02:45:12
还不清楚你到底想要做什么--数据跨越了几天。
此代码将向您显示数据涵盖的时间段内每个国家/地区的所有新病例的计数。
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}')https://stackoverflow.com/questions/66142599
复制相似问题