2017-10-31 9 views
0

탐험과 학습을하면서 Python을 처음 접해 보았습니다. 오늘은 JSON으로 작업하고 다른 모든 결과를 건너 뛰려고합니다. 다른 모든 결과를 건너 뛰거나 통과 시키거나 "계속"하려면 어떻게합니까? 계속, 반복, islice, 범위 및 next()를 사용하여 시도했지만,이 특정 동작을 수행하는 것처럼 보일 수는 없습니다.for 루프, json, openweathermap api를 사용하여 파이썬이 결과를 건너 뛰었습니다.

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, 주 및 설명을 인쇄하려고합니다. 나는 매일 켈빈에서 화씨로 변환하여 문자 메시지로 Gmail을 사용하여 매일 새로운 예측을합니다. 어떤 도움을 주셔서 미리 감사드립니다!

답변

2

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]

대신에 그들 모두를 검색, 그것은 두 가지의 단계를 사용하여 목록의 일부 요소를 검색하기 위해 파이썬을 알려주는 표기이지만. Here은 이것이 어떻게 작동하는지에 대한 훌륭한 설명입니다. 완전성을 위해서

한 예 :

>>> a = [1, 2, 3, 4, 5, 6] 
>>> print(a[::2]) 
[1, 3, 5] 
+0

완벽한, 이것은 내가 필요 정확히이다. 정말 고맙습니다. – SpaceCadet