Я новичок в кодировании и у меня проблемы с импортом данных в Python - PullRequest
0 голосов
/ 22 октября 2019

Я импортировал данные из API и мне нужна помощь с получением определенного набора данных. Всякий раз, когда я пытаюсь напечатать определенный набор данных и выполнить тестовый код, я получаю сообщение KeyError и спрашиваю, как его исправить.

До сих пор я пробовал печатать («Вот текущее ожидаемое время отправления длялиния шины 1, направляющаяся в "+ resp ['вылеты'] [" линия "] [" направление "]), но она все еще не работает.

from urllib.request import urlopen
import json 

def askbot(bus_stop):

    if bus_stop == "CU2":
        url =  urlopen("https://transportapi.com/v3/uk/bus/stop/43001053801/live.json? [app_id]&[app_key]&group=route&nextbuses=yes")
        data = json.loads(url.read().decode())
        json_str=json.dumps(data)
        resp=json.loads(json_str)  
        which_line = input("Which bus line would you like to know? ")
        if which_line == "1":
           print("Here is the current expected departure time for bus line  1 heading to " + resp['departures']['line']['direction'])
        else:
            print("That is not a valid line!")
    else:
        print("That bus stop does not exist!")

which_stop = input("Which bus stop timetable would you like to know? ")
askbot(which_stop)

Этот код в настоящее время только тестирует этот конкретныйавтобусная остановка, однако, при вводе '1' для второго входа появляется сообщение об ошибке, говорящее

File "c:/Users/[Name]/Desktop/[Folder]/Test 2.py", line 23, in <module>
askbot(which_stop)
  File "c:/Users/[Name]/Desktop/[Folder]/Test 2.py", line 14, in askbot
print("Here is the current expected departure time for bus line 1 heading to " + resp['departures']['line']['direction'])
KeyError: 'line' 

Я не уверен, что это значит, я также хотел бы отметить, что API обновляется в реальном времении информация может измениться.

1 Ответ

0 голосов
/ 22 октября 2019

Как и в большинстве вопросов по API, лучше всего начать с документации. Это конечная точка API, о которой идет речь. Имея это в виду, мы можем увидеть ожидаемую структуру ответа.

С вашим кодом вы почти у цели. Вам нужно еще немного изучить структуру ответа. «Вылеты» - это словарь, в котором в качестве ключа используется номер строки (например, «1») вместо слова «строка». Имея это в виду, измените выражение print так:

print("Here is the current expected departure time for bus line  1 heading to " + resp['departures'][which_line]['direction'])
...