處于興趣,寫了一個遍歷指定城市五天內的天氣預報,并轉為華氏度顯示。
把城市名字寫到一個列表里這樣可以方便的添加城市。并附有詳細注釋
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
import requests import json #定義一個函數 避免代碼重寫多次。 def gettemp(week,d_or_n,date): wendu = data[ 'result' ][ 'weather' ][week][ 'info' ][d_or_n][date] #對字典進行拆分 return int (wendu) def getft(t): ft = t * 1.8 + 32 return float ( str (ft)[ 0 : 4 ]) cities = [ '保定' , '北京' , '上海' , '武漢' , '鄭州' , '齊齊哈爾' ] #這里可以指定想要遍歷的城市 url = 'http://api.avatardata.cn/Weather/Query?key=68e75677978441f6872c1106175b8673&cityname=' #用于和cities里的城市進行字符串拼接 low = 0 high = 2 for city in cities: r = requests.get(url + city) # 最基本的GET請求 #print(r.status_code) 獲取返回狀態(tài)200是成功 #print(r.text) 打印解碼后的返回數據 data = json.loads(r.text) #返回的json數據被轉換為字典類型 #print(type(data)) data 的數據類型是字典 所以可以按照字典操作(字典里的列表就按列表操作) print (city, '近五天天氣預報:' ) for i in range ( 5 ): week = '周' + str (data[ 'result' ][ 'weather' ][i][ 'week' ]) #對字典類型進行逐個拆分 如列表 元組等。 daylow = gettemp(i, 'day' ,low) dlf = getft(daylow) dayhigh = gettemp(i, 'day' ,high) dhf = getft(dayhigh) nightlow = gettemp(i, 'night' ,low) nlf = getft(nightlow) nighthigh = gettemp(i, 'night' ,high) nhf = getft(nighthigh) print (week, '白天氣溫:' ,daylow, '~' ,dayhigh, '攝氏度' , '晚上氣溫:' ,nightlow, '~' ,nighthigh, '攝氏度' ) print ( ' ' , '白天氣溫:' ,dlf, '~' ,dhf, '華氏度' , '晚上氣溫:' ,nlf, '~' ,nhf, '華氏度' ) print ( '\n' ) { "result" :{ "realtime" :{ "wind" :{ "windspeed" :null, "direct" : "西風" , "power" : "3級" , "offset" :null}, "time" : "16:00:00" , "weather" :{ "humidity" : "27" , "img" : "0" , "info" : "晴" , "temperature" : "13" }, "dataUptime" : "1490517362" , "date" : "2017-03-26" , "city_code" : "101090201" , "city_name" : "保定" , "week" : "0" , "moon" : "二月廿九" }, "life" :{ "date" : "2017-3-26" , "info" :{ "kongtiao" :[ "開啟制暖空調" , "您將感到有些冷,可以適當開啟制暖空調調節(jié)室內溫度,以免著涼感冒。" ], "yundong" :[ "較適宜" , "天氣較好,但考慮風力較強且氣溫較低,推薦您進行室內運動,若在戶外運動注意防風并適當增減衣物。" ], "ziwaixian" :[ "中等" , "屬中等強度紫外線輻射天氣,外出時建議涂擦SPF高于15、PA+的防曬護膚品,戴帽子、太陽鏡。" ], "ganmao" :[ "較易發(fā)" , "晝夜溫差較大,較易發(fā)生感冒,請適當增減衣服。體質較弱的朋友請注意防護。" ], "xiche" :[ "較適宜" , "較適宜洗車,未來一天無雨,風力較小,擦洗一新的汽車至少能保持一天。" ], "wuran" :null, "chuanyi" :[ "冷" , "天氣冷,建議著棉服、羽絨服、皮夾克加羊毛衫等冬季服裝。年老體弱者宜著厚棉衣、冬大衣或厚羽絨服。" ]}}, "weather" :[{ "date" : "2017-03-26" , "week" : "日" , "nongli" : "二月廿九" , "info" :{ "dawn" :null, "day" :[ "0" , "晴" , "17" , "西北風" , "3-4 級" , "06:12" ], "night" :[ "0" , "晴" , "2" , "西南風" , "微風" , "18:36" ]}},{ "date" : "2017-03-27" , "week" : "一" , "nongli" : "二月三十" , "info" :{ "dawn" :[ "0" , "晴" , "2" , "西南風" , "微風" , "18:36" ], "day" :[ "0" , "晴" , "15" , "南風" , "微風" , "06:11" ], "night" :[ "7" , "小雨" , "3" , "南風" , "微風" , "18:37" ]}},{ "date" : "2017-03-28" , "week" : "二" , "nongli" : "三月初一" , "info" :{ "dawn" :[ "7" , "小雨" , "3" , "南風" , "微風" , "18:37" ], "day" :[ "1" , "多云" , "15" , "南風" , "微風" , "06:09" ], "night" :[ "0" , "晴" , "3" , "南風" , "微風" , "18:38" ]}},{ "date" : "2017-03-29" , "week" : "三" , "nongli" : "三月初二" , "info" :{ "dawn" :[ "0" , "晴" , "3" , "南風" , "微風" , "18:38" ], "day" :[ "0" , "晴" , "18" , "南風" , "微風" , "06:08" ], "night" :[ "0" , "晴" , "3" , "北風" , "微風" , "18:39" ]}},{ "date" : "2017-03-30" , "week" : "四" , "nongli" : "三月初三" , "info" :{ "dawn" :[ "0" , "晴" , "3" , "北風" , "微風" , "18:39" ], "day" :[ "0" , "晴" , "17" , "北風" , "微風" , "06:06" ], "night" :[ "0" , "晴" , "3" , "北風" , "微風" , "18:40" ]}}], "pm25" :{ "key" : "Baoding" , "show_desc" : "0" , "pm25" :{ "curPm" : "34" , "pm25" : "14" , "pm10" : "26" , "level" : "1" , "quality" : "優(yōu)" , "des" : "空氣很好,可以外出活動" }, "dateTime" : "2017年03月26日16時" , "cityName" : "保定" }, "isForeign" : 0 }, "error_code" : 0 , "reason" : "Succes" } 這是返回的一個json數據,可以通過json格式化工具查看會方便一些,通過json.loads其實都是字典列表的一些嵌套,而想要取的數據 在字典里 "result" 里, 而data[ 'result' ] 又是一個字典, { 'life' : { 'date' : '2017-3-26' , 'info' : { 'yundong' : [ '較適宜' , '天氣較好,但考慮風力較強且氣溫較低,推薦您進行室內運動,若在戶外運動注意防風并適當增減衣物。' ], 'xiche' : [ '較適宜' , '較適宜洗車,未來一天無雨,風力較小,擦洗一新的汽車至少能保持一天。' ], 'ganmao' : [ '較易發(fā)' , '晝夜溫差較大,較易發(fā)生感冒,請適當增減衣服。體質較弱的朋友請注意防護。' ], 'ziwaixian' : [ '中等' , '屬中等強度紫外線輻射天氣,外出時建議涂擦SPF高于15、PA+的防曬護膚品,戴帽子、太陽鏡。' ], 'chuanyi' : [ '冷' , '天氣冷,建議著棉服、羽絨服、皮夾克加羊毛衫等冬季服裝。年老體弱者宜著厚棉衣、冬大衣或厚羽絨服。' ], 'wuran' : None , 'kongtiao' : [ '開啟制暖空調' , '您將感到有些冷,可以適當開啟制暖空調調節(jié)室內溫度,以免著涼感冒。' ]}}, 'weather' : [{ 'date' : '2017-03-26' , 'week' : '日' , 'info' : { 'dawn' : None , 'night' : [ '0' , '晴' , '2' , '西南風' , '微風' , '18:36' ], 'day' : [ '0' , '晴' , '17' , '西北風' , '3-4 級' , '06:12' ]}, 'nongli' : '二月廿九' }, { 'date' : '2017-03-27' , 'week' : '一' , 'info' : { 'dawn' : [ '0' , '晴' , '2' , '西南風' , '微風' , '18:36' ], 'night' : [ '7' , '小雨' , '3' , '南風' , '微風' , '18:37' ], 'day' : [ '0' , '晴' , '15' , '南風' , '微風' , '06:11' ]}, 'nongli' : '二月三十' }, { 'date' : '2017-03-28' , 'week' : '二' , 'info' : { 'dawn' : [ '7' , '小雨' , '3' , '南風' , '微風' , '18:37' ], 'night' : [ '0' , '晴' , '3' , '南風' , '微風' , '18:38' ], 'day' : [ '1' , '多云' , '15' , '南風' , '微風' , '06:09' ]}, 'nongli' : '三月初一' }, { 'date' : '2017-03-29' , 'week' : '三' , 'info' : { 'dawn' : [ '0' , '晴' , '3' , '南風' , '微風' , '18:38' ], 'night' : [ '0' , '晴' , '3' , '北風' , '微風' , '18:39' ], 'day' : [ '0' , '晴' , '18' , '南風' , '微風' , '06:08' ]}, 'nongli' : '三月初二' }, { 'date' : '2017-03-30' , 'week' : '四' , 'info' : { 'dawn' : [ '0' , '晴' , '3' , '北風' , '微風' , '18:39' ], 'night' : [ '0' , '晴' , '3' , '北風' , '微風' , '18:40' ], 'day' : [ '0' , '晴' , '17' , '北風' , '微風' , '06:06' ]}, 'nongli' : '三月初三' }], 'isForeign' : 0 , 'pm25' : { 'pm25' : { 'des' : '空氣很好,可以外出活動' , 'curPm' : '34' , 'level' : '1' , 'pm10' : '26' , 'pm25' : '14' , 'quality' : '優(yōu)' }, 'show_desc' : '0' , 'key' : 'Baoding' , 'dateTime' : '2017年03月26日16時' , 'cityName' : '保定' }, 'realtime' : { 'city_name' : '保定' , 'weather' : { 'info' : '晴' , 'img' : '0' , 'humidity' : '27' , 'temperature' : '13' }, 'week' : '0' , 'wind' : { 'windspeed' : None , 'power' : '3級' , 'offset' : None , 'direct' : '西風' }, 'city_code' : '101090201' , 'date' : '2017-03-26' , 'dataUptime' : '1490517362' , 'time' : '16:00:00' , 'moon' : '二月廿九' }} 相同的方法取 data[ 'result' ][ 'weather' ] 這又是一個元組, [{ 'nongli' : '二月廿九' , 'info' : { 'night' : [ '0' , '晴' , '2' , '西南風' , '微風' , '18:36' ], 'dawn' : None , 'day' : [ '0' , '晴' , '17' , '西北風' , '3-4 級' , '06:12' ]}, 'week' : '日' , 'date' : '2017-03-26' }, { 'nongli' : '二月三十' , 'info' : { 'night' : [ '7' , '小雨' , '3' , '南風' , '微風' , '18:37' ], 'dawn' : [ '0' , '晴' , '2' , '西南風' , '微風' , '18:36' ], 'day' : [ '0' , '晴' , '15' , '南風' , '微風' , '06:11' ]}, 'week' : '一' , 'date' : '2017-03-27' }, { 'nongli' : '三月初一' , 'info' : { 'night' : [ '0' , '晴' , '3' , '南風' , '微風' , '18:38' ], 'dawn' : [ '7' , '小雨' , '3' , '南風' , '微風' , '18:37' ], 'day' : [ '1' , '多云' , '15' , '南風' , '微風' , '06:09' ]}, 'week' : '二' , 'date' : '2017-03-28' }, { 'nongli' : '三月初二' , 'info' : { 'night' : [ '0' , '晴' , '3' , '北風' , '微風' , '18:39' ], 'dawn' : [ '0' , '晴' , '3' , '南風' , '微風' , '18:38' ], 'day' : [ '0' , '晴' , '18' , '南風' , '微風' , '06:08' ]}, 'week' : '三' , 'date' : '2017-03-29' }, { 'nongli' : '三月初三' , 'info' : { 'night' : [ '0' , '晴' , '3' , '北風' , '微風' , '18:40' ], 'dawn' : [ '0' , '晴' , '3' , '北風' , '微風' , '18:39' ], 'day' : [ '0' , '晴' , '17' , '北風' , '微風' , '06:06' ]}, 'week' : '四' , 'date' : '2017-03-30' }] 接著取元組里的字典,逐步拆分即可獲得想要的數據。 |
以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持服務器之家!
原文鏈接:http://www.cnblogs.com/mryrs/p/6623272.html