1. json 與 python 資料型別轉換
具有read()或者write()方法的物件就是類檔案物件, f = open(“a.txt”,”r”) f 就是類檔案物件
- json.loads 把json字串轉化為python型別
- json.dumps能夠把python型別轉化為json字串,在寫入檔案的時候可以定義格式。
ensure_ascii=False
解決中文不能顯示的問題, indent=4
格式化寫入
- json使用注意點
- json中的字串都是雙引號引起來的
- 如果不是雙引號
- eval:能實現簡單的字串和python型別的轉化
- replace:把單引號替換為雙引號
- 往一個檔案中寫入多個json串,不再是一個json串,不能直接讀取
2. 程式碼示例
import requests
# pprint 格式化輸出
from pprint import pprint
import json
headers = {
"User-Agent": "Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko) Version/11.0 Mobile/15A5341f Safari/604.1",
"Cookie": 'll="108288"; bid=sJsLF5EFmNU; __utma=30149280.1153899539.1547884621.1547884621.1547884621.1; __utmc=30149280; __utmz=30149280.1547884621.1.1.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided); ap_v=0,6.0; _vwo_uuid_v2=D2FC899ECDFDF067F8A1D9361C62E08BF|dcde25b86f8f06e240c52f1184de892e; __utmb=30149280.3.10.1547884621; talionnav_show_app="0"; Hm_lvt_6d4a8cfea88fa457c3127e14fb5fabc2=1547885758; _ga=GA1.3.1153899539.1547884621; _gid=GA1.3.269528931.1547885758; Hm_lpvt_6d4a8cfea88fa457c3127e14fb5fabc2=1547887119',
"Referer": "https://m.douban.com/movie/"
}
response = requests.get('https://m.douban.com/rexxar/api/v2/subject_collection/movie_showing/items?&start=0&count=8&loc_id=108288', headers=headers)
data = response.content.decode()
# json.loads 把json字串轉化為python型別
dict = json.loads(data)
# pprint(dict)
# json.dumps能夠把python型別轉化為json字串,在寫入檔案的時候可以定義格式
# ensure_ascii=False 解決中文不能顯示的問題, indent=4 格式化寫入
with open('douban.json', 'w', encoding='utf-8') as f:
f.write(json.dumps(dict, ensure_ascii=False, indent=4))
with open('douban.json', 'r', encoding='utf-8') as f:
file_data = f.read()
json_data = json.loads(file_data)
# pprint(json_data)
# 使用json.load提取類檔案物件中的資料
with open('douban.json', 'r', encoding='utf-8') as f:
load_data = json.load(f)
print(load_data)
print(type(load_data)) # <class 'dict'>
# json.dump能夠把python型別放入類檔案物件中
with open('douban1.json', 'w', encoding='utf-8') as f:
json.dump(dict, f, ensure_ascii=False, indent=4)
複製程式碼