Python——JSON 模組

Dictator丶發表於2019-01-19

1. json 與 python 資料型別轉換

Python——JSON 模組
具有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串,不能直接讀取
      • 一行寫一個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)
複製程式碼

Python——JSON 模組

相關文章