2017-10-31 15 views
0

私はまだPythonを使い始めていないので、JSONを使って作業しています。他のすべての結果をスキップ、パス、または「続行」するにはどうすればよいですか?私はcontinue、iteration、islice、ranges、next()を使ってみましたが、この特定の動作を行うようには思えません。forループ、json、openweathermap apiを使用してPythonをスキップする

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]代わりにそれらのすべてを取得するのではなく、2つのステップを使用して、リストのいくつかの要素を取得するためのpythonを伝える表記ですが。 Hereは、これがどのように機能するかについての素晴らしい説明です。

完全を期すための一つの例:

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

パーフェクト、これは私がまさに必要です。どうもありがとうございます。 – SpaceCadet

関連する問題