查天氣(3)

看一下我們已經(jīng)拿到的json格式的天氣數(shù)據(jù):

1. {

2. "weatherinfo": {

3. "city": "南京",

4. "cityid": "101190101",

5. "temp1": "37℃",

6. "temp2": "28℃",

7. "weather": "多云",

8. "img1": "d1.gif",

9. "img2": "n1.gif",

10. "ptime": "11:00"

11. }

12. }

復制代碼

直接在命令行中看到的應(yīng)該是沒有換行和空格的一長串字符,這里我把格式整理了一下??梢钥闯?,它像是一個字典的結(jié)構(gòu),但是有兩層。最外層只有一個key--“weatherinfo”,它的value是另一個字典,里面包含了好幾項天氣信息,現(xiàn)在我們最關(guān)心的就是其中的temp1,temp2和weather。

雖然看上去像字典,但它對于程序來說,仍然是一個字符串,只不過是一個滿足json格式的字符串。我們用python中提供的另一個模塊json提供的loads方法,把它轉(zhuǎn)成一個真正的字典。

1. import json

2.

3. data = json.loads(content)

復制代碼

這時候的data已經(jīng)是一個字典,盡管在控制臺中輸出它,看上去和content沒什么區(qū)別,只是編碼上有些不同:

1. {u'weatherinfo': {u'city': u'\u5357\u4eac', u'ptime': u'11:00', u'cityid': u'101190101', u'temp2': u'28\u2103', u'temp1': u'37\u2103', u'weather': u'\u591a\u4e91', u'img2': u'n1.gif', u'img1': u'd1.gif'}}

復制代碼

但如果你用type方法看一下它們的類型:

1. print type(content)

2. print type(data)

3.

復制代碼

就知道區(qū)別在哪里了。

之后的事情就比較容易了。

1. result = data['weatherinfo']

2. str_temp = ('%s\n%s ~ %s') % (

3. result['weather'],

4. result['temp1'],

5. result['temp2']

6. )

7. print str_temp

復制代碼

為了防止在請求過程中出錯,我加上了一個異常處理。

1. try:

2. ###

3. ###

4. except:

5. print '查詢失敗'

復制代碼

以及沒有找到城市時的處理:

1. if citycode:

2. ###

3. ###

4. else:

5. print '沒有找到該城市'

復制代碼

完整代碼:

1. # -*- coding: utf-8 -*-

2. import urllib2

3. import json

4. from city import city

5.

6. cityname = raw_input('你想查哪個城市的天氣?\n')

7. citycode = city.get(cityname)

8. if citycode:

9. try:

10. url = ('http://www.weather.com.cn/data/cityinfo/%s.html'

11. % citycode)

12. content = urllib2.urlopen(url).read()

13. data = json.loads(content)

14. result = data['weatherinfo']

15. str_temp = ('%s\n%s ~ %s') % (

16. result['weather'],

17. result['temp1'],

18. result['temp2']

19. )

20. print str_temp

21. except:

22. print '查詢失敗'

23. else:

24. print '沒有找到該城市'

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • pyspark.sql模塊 模塊上下文 Spark SQL和DataFrames的重要類: pyspark.sql...
    mpro閱讀 9,934評論 0 13
  • 一、 又是一個炎熱的夏天。我跟往常一樣,到了下班點還在公司磨蹭。我那個小公寓沒有安空調(diào),到了晚上簡直是蒸籠地獄。既...
    夢枕饃閱讀 426評論 0 0
  • 離開老鐵很久了,可可突然很想念他。 根本聯(lián)系不上?;蛘撸撬皇呛茉谝馕?,忘記我了;或者,是我太驕傲了,他只要不回...
    尚小靜閱讀 289評論 0 0
  • 又在一個人追劇,又在一個人想你,又在一個人偷懶。想和你一起看何洛和章遠,如此相像的我們,只是我沒有何洛那么勇敢,...
    司果果閱讀 242評論 0 0

友情鏈接更多精彩內(nèi)容