Ошибка ключа при использовании одного и того же значения ключа в отдельных функциях для анализа JSON с python - PullRequest
0 голосов
/ 23 апреля 2020

Я получаю ключевую ошибку для «данных», и, насколько я могу судить, это потому, что я использовал ее в обеих нижеприведенных функциях:

В зависимости от того, какая функция вызывается первой, она возвращает «среднее» значение, но вторая вызываемая функция всегда возвращает KeyError: 'data'. Я попытался сначала вызвать каждый из них, и это происходит в каждом случае.

import requests
import json

max_age = 6
data_points = 30

while True:
    postcode = input('Enter the postcode: ')
    if len(postcode) < 5:
        print("Postcode is at least 5 characters. Try again.")
    elif len(postcode) > 8:
        print("Postcode is no more than 8 characters. Try again.")
    else:
        print(" ")
    break

building_type = input(f'Enter type [flat, terraced_house, semi_detached_house, detached_house]: ')
beds = input(f'Enter number of bedrooms: ')

max_age = 6
data_points = 30


def asking_rent():
    asking_rent_url = f"https://api.propertydata.co.uk/rents?key=xxxxx&postcode={postcode}&bedrooms={beds}&property_type={building_type}&points={data_points}"
    r2 = requests.get(asking_rent_url)
    json_data2 = json.loads(r2.text)
    asking_rent_value = json_data2['data']['long_let']['average']
    print(f"Asking Rent: £{asking_rent_value}")


def sold_price_per_sqft():
    sold_price_url = f"https://api.propertydata.co.uk/sold-prices-per-sqf?key=xxxxx&postcode={postcode}&max_age={max_age}&type={building_type}&points={data_points}"
    r3 = requests.get(sold_price_url)
    json_data3 = json.loads(r3.text)
    sold_price_value = json_data3['data']['average']
    print(f"Sold Price Per sqft: £{sold_price_value}")

asking_rent()
sold_price_per_sqft()

Как еще можно извлечь «среднее» значение из следующих двух JSON или есть более подходящий способ возврата обе функции успешно?

json_data2:

{
  "status": "success",
  "postcode": "TW3 1NE",
  "postcode_type": "full",
  "url": "https://propertydata.co.uk/draw?input=TW3+1NE",
  "bedrooms": 2,
  "data": {
    "long_let": {
      "points_analysed": 30,
      "radius": "0.38",
      "unit": "gbp_per_week",
      "average": 319,

json_data3:

{
  "status": "success",
  "postcode": "TW3 1NE",
  "postcode_type": "full",
  "url": "https://propertydata.co.uk/draw?input=TW3+1NE",
  "type": "flat",
  "max_age": 6,
  "data": {
    "points_analysed": 30,
    "radius": "1.00",
    "date_earliest": "2019-10-25",
    "date_latest": "2020-02-07",
    "average": 466,
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...