json - 如何从 JSON 中选择特定的键值对
问题描述
我在 .json 文件中有这些数据
{ "sessions": [ { "address": "Campbellbay", "available_capacity": 50, "available_capacity_dose1": 25, "available_capacity_dose2": 25, "block_name": "Campbell Bay", "center_id": 552109, "date": "19-05-2021", "district_name": "Nicobar", "fee": "0", "fee_type": "Free", "from": "09:00:00", "lat": 7, "long": 93, "min_age_limit": 45, "name": "Campbellbay PHC", "pincode": 744302, "session_id": "bfea957c-a34e-4b5f-99a0-4c739102eec5", "slots": [ "09:00AM-11:00AM", "11:00AM-01:00PM", "01:00PM-03:00PM", "03:00PM-05:00PM" ], "state_name": "Andaman and Nicobar Islands", "to": "17:00:00", "vaccine": "COVISHIELD" }, { "address": "Car Nicobar", "available_capacity": 45, "available_capacity_dose1": 20, "available_capacity_dose2": 25, "block_name": "Car Nicobar", "center_id": 570779, "date": "19-05-2021", "district_name": "Nicobar", "fee": "0", "fee_type": "Free", "from": "09:00:00", "lat": 9, "long": 92, "min_age_limit": 45, "name": "BJR Hospital", "pincode": 744301, "session_id": "f7d34d28-d936-4a25-95eb-7a1cdd09c545", "slots": [ "09:00AM-11:00AM", "11:00AM-01:00PM", "01:00PM-03:00PM", "03:00PM-05:00PM" ], "state_name": "Andaman and Nicobar Islands", "to": "17:00:00", "vaccine": "COVISHIELD" }, { "address": "Nancowry", "available_capacity": 50, "available_capacity_dose1": 25, "available_capacity_dose2": 25, "block_name": "Nancowry", "center_id": 552108, "date": "19-05-2021", "district_name": "Nicobar", "fee": "0", "fee_type": "Free", "from": "09:00:00", "lat": 7, "long": 93, "min_age_limit": 45, "name": "Nancowry CHC", "pincode": 744303, "session_id": "2a73f5c0-d0f8-4272-9cf1-2e68f20d8751", "slots": [ "09:00AM-11:00AM", "11:00AM-01:00PM", "01:00PM-03:00PM", "03:00PM-05:00PM" ], "state_name": "Andaman and Nicobar Islands", "to": "17:00:00", "vaccine": "COVISHIELD" } ] }
我的代码是
输入
import json
import os
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
其他功能,以免您脱离上下文
def screen_clear():
# for mac and linux(here, os.name is 'posix')
if os.name == 'posix':
cl = os.system('clear')
else:
cl = os.system('cls')
# for windows platfrom
def main_menu():
screen_clear()
print("Vaccine Finder\n")
op = int(input("\n1 View State IDs'\n\n2 View District IDs'\n\n3 Check Vaccine In Your District\n\n4 Quit: \n\n"))
while True:
if op == 1:
steller()
elif op == 2:
dteller()
elif op == 3:
vteller()
elif op == 4:
break
else:
print("Invalid Input!")
================= 到现在为止是了解这个问题所需的一切==================
有问题的代码:
def vteller():
global driver
district_id = int(input('Enter District ID: '))
date = input('Enter Date format(DD-MM-YYYY): ')
vweb = f"https://cdn-api.co-vin.in/api/v2/appointment/sessions/public/findByDistrict?district_id={district_id}&date={date}"
driver.get(vweb) # The Website
data = driver.find_element_by_tag_name('pre').text
parsed = json.loads(data)
j1 = json.dumps(parsed, indent=4, sort_keys=True)
fl = open('vfinder.json', 'w+')
fl.write(j1)
fl.close()
print("\n")
print("\n")
op = int(input('Enter 0(Zero) To Go To Main Menu: '))
if op == 0:
main_menu()
else:
print("Invalid Input!")
main_menu()
我想取出特定的键及其值并打印\存储它们,例如。我想要“地址”和“block_name”以及“名称”和“费用”等等,我该怎么做?
解决方案
将 json 输出保存为 json 文件
然后
with open("your_file_name.json", "r") as f:#Put Respective File Name
keys = json.load(f)
这将读取文件,我们将 key 作为对象,然后您可以使用它来获取数据,将 json 视为 dict。
例如 Json 数据
{
"sessions": [
{
"address": "Campbellbay",
"available_capacity": 50,
"available_capacity_dose1": 25,
"available_capacity_dose2": 25,
"block_name": "Campbell Bay",
"center_id": 552109,
"date": "19-05-2021",
"district_name": "Nicobar",
"fee": "0",
"fee_type": "Free",
"from": "09:00:00",
"lat": 7,
"long": 93,
"min_age_limit": 45,
"name": "Campbellbay PHC",
"pincode": 744302,
"session_id": "bfea957c-a34e-4b5f-99a0-4c739102eec5",
"slots": [
"09:00AM-11:00AM",
"11:00AM-01:00PM",
"01:00PM-03:00PM",
"03:00PM-05:00PM"
],
"state_name": "Andaman and Nicobar Islands",
"to": "17:00:00",
"vaccine": "COVISHIELD"
},
{
"address": "Car Nicobar",
"available_capacity": 45,
"available_capacity_dose1": 20,
"available_capacity_dose2": 25,
"block_name": "Car Nicobar",
"center_id": 570779,
"date": "19-05-2021",
"district_name": "Nicobar",
"fee": "0",
"fee_type": "Free",
"from": "09:00:00",
"lat": 9,
"long": 92,
"min_age_limit": 45,
"name": "BJR Hospital",
"pincode": 744301,
"session_id": "f7d34d28-d936-4a25-95eb-7a1cdd09c545",
"slots": [
"09:00AM-11:00AM",
"11:00AM-01:00PM",
"01:00PM-03:00PM",
"03:00PM-05:00PM"
],
"state_name": "Andaman and Nicobar Islands",
"to": "17:00:00",
"vaccine": "COVISHIELD"
},
{
"address": "Nancowry",
"available_capacity": 50,
"available_capacity_dose1": 25,
"available_capacity_dose2": 25,
"block_name": "Nancowry",
"center_id": 552108,
"date": "19-05-2021",
"district_name": "Nicobar",
"fee": "0",
"fee_type": "Free",
"from": "09:00:00",
"lat": 7,
"long": 93,
"min_age_limit": 45,
"name": "Nancowry CHC",
"pincode": 744303,
"session_id": "2a73f5c0-d0f8-4272-9cf1-2e68f20d8751",
"slots": [
"09:00AM-11:00AM",
"11:00AM-01:00PM",
"01:00PM-03:00PM",
"03:00PM-05:00PM"
],
"state_name": "Andaman and Nicobar Islands",
"to": "17:00:00",
"vaccine": "COVISHIELD"
}
]
}
所以在这里如果你想得到地址
在蟒蛇
address = keys['sessions']['address']
district = keys['sessions']['district_name']
print(address)
print(district )
最终代码
with open("your_file_name.json", "r") as f:#Put Respective File Name
keys = json.load(f)
address = keys['sessions'][0]['address']
district = keys['sessions'][0]['district_name']
print(address)
print(district )
输出
Campbellbay
Nicobar
推荐阅读
- javascript - 如何维护 isAuth 并保护私有路由?
- oracle12c - 无法在以下查询中创建物化视图
- firebase - 无法使用 Firebase 管理员在 Node.js 的 Google 存储对象上设置元数据
- php - 优雅地处理从代码中不同位置出现的非对象错误的属性
- java - 尝试使用颜色图绘制垂直线性渐变,但只使用前 9 种颜色:为什么?
- arrays - 在 Twig 中显示数据数组
- html - 处理大型 svg 图像的技术
- android - 活动幻灯片动画仅在按下后退按钮时有效
- ios - 月份更改时调用 FSCalendar 函数
- c# - 将两个多级类对象与元素更新c#合并