1. 程式人生 > >python進階寶典14- json 資料處理

python進階寶典14- json 資料處理

先看程式碼:

## 用 loads() 讀取json,返回一個python字典
import json
stringJson = '{"name":"Zophie","iscat":true,"micecaught":0,"felineiq":null}'  # json字串總是用雙引號
jsonToPython = json.loads(stringJson)
print(jsonToPython)           # {'name': 'Zophie', 'iscat': True, 'micecaught': 0, 'felineiq': None}
# dumps() 輸出 json 格式
pythonValue = {'name': 'Zophie', 'iscat': True, 'micecaught': 0, 'felineiq': None}
stringJson = json.dumps(pythonValue)
print(stringJson)


##  下載並處理天氣預報資料
# 1. 命令列讀取請求天氣的位置     -- 處理 sys.argv
# 2. 從OpenWeatherMap.org 下載JSON天氣資料   --呼叫 requests.get()
# 3. 講JSON資料轉成python資料結構   -- json.loads()
# 4. 列印未來兩天的天氣
# Prints the weather for a location from the command line.

import json, requests, sys
# Compute location from command ine arguments.
if len(sys.argv) < 2:
    print('Usage: quickWeather.py location')
    sys.exit()
location = ' '.join(sys.argv[1:])
# Download the JSON data from OpenWeatherMap.org's API.
url = 'http://api.map.baidu.com/telematics/v3/weather?location=%s&output=json&ak=8ixCCFzlBB617YX7tONI2P5B\
&mcode=1C:6B:42:33:E8:A6:DC:A2:11:6E:26:EC:84:BD:42:E3:8E:6B:57:9A;com.example.administrator.jsontest' % (location)
response = requests.get(url)
response.raise_for_status()
# Load JSON data into a Python variable.
weatherData = json.loads(response.text)
print('Current weather in %s:' % (location) )
print(weatherData)
# w = weatherData['list']                # 根據具體資料列印
# print(w[0]['weather'][0]['main'])      # 根據具體資料列印

先說下,下面這個天氣預報的例子不一定能跑出來。試驗了下,幾個國外的天氣 api 訪問不了,與網路控制有關;在網上找了幾個號稱免費的,驗證下來都不行。 還是隻有使用百度的API了。 

需要去註冊一個百度API的開發金鑰ak,具體步驟可參考此前文章:

Python使用百度地圖API實現地點資訊轉換及房價指數熱力地圖     https://blog.csdn.net/ebzxw/article/details/80265796

另外,國家氣象局的可以試一下,好像註冊後要等48小時稽核。