Python пропускает результат, используя цикл for, json, openweathermap API

Я все еще новичок в Python, изучая, изучая, и сегодня я работаю с JSON и пытаюсь пропустить любой другой результат. Как пропустить, передать или «продолжить» любой другой результат? Я пробовал использовать continue, iteration, islice, ranges и next(), но я просто не могу добиться этого конкретного поведения. Вот мой код:

import requests, pytemperature, json

r = requests.get('http://samples.openweathermap.org/data/2.5/forecast?
lat=35&lon=139&appid=b1b15e88fa797225412429c1c50c122a1')
dict = r.json()
select_data = dict['list']

for box in select_data:
    if 'dt_txt' in box:
        print(box['dt_txt'], box['main']['temp_min'], box['main']  
 ['temp_max'], box['wind']['speed'], box['weather'][0]['description'])  
    else:
        print('no found')

В приведенной выше ссылке вы можете найти полный файл JSON, но мой вывод выглядит следующим образом (всего ~ 40 строк):

2017-11-01 00:00:00 284.786 285.03 1.4 clear sky
2017-11-01 03:00:00 281.496 281.68 1.6 clear sky
2017-11-01 06:00:00 279.633 279.75 1.06 clear sky

Окончательный результат должен выглядеть

2017-11-01 00:00:00 284.786 285.03 1.4 clear sky
2017-11-01 06:00:00 279.633 279.75 1.06 clear sky

Примечание: в конце я пытаюсь распечатать дату, temp_min, temp_max, main и описание. Я буду конвертировать температуру из кельвинов в градусы Фаренгейта, а затем использовать Gmail, чтобы каждый день отправлять мне текстовые сообщения с новым прогнозом. Спасибо заранее за любую помощь!


person SpaceCadet    schedule 31.10.2017    source источник


Ответы (1)


Если select_data — это список, вы можете его разрезать.

for box in select_data[::2]:
    if 'dt_txt' in box:
        print(box['dt_txt'], box['main']['temp_min'], box['main']  
 ['temp_max'], box['wind']['speed'], box['weather'][0]['description'])  
    else:
        print('no found')

[::2] — это нотация, которая указывает python получить некоторые элементы списка, но вместо того, чтобы извлекать их все, он использует шаги из двух. Вот отличное объяснение того, как это работает.

Один пример для полноты картины:

>>> a = [1, 2, 3, 4, 5, 6]
>>> print(a[::2])
[1, 3, 5]
person araraonline    schedule 31.10.2017
comment
Отлично, это именно то, что мне было нужно. Большое спасибо. - person SpaceCadet; 01.11.2017