python如何讀取和存儲dict()與.json格式文件
讀取和存儲dict()與.json格式文件
讀取.json格式文件並將數據保存到字典中
數據文件:hg.json
{"商傢名稱": "珍滋味港式粥火鍋(工體店)", "評分": 27.0, "地址": "火鍋工人體育場東路丙2號中國紅街3號樓2層裡", "人均消費": 174, "評論數量": 2307}{"商傢名稱": "井格老灶火鍋(望京新世界店)", "評分": 26.2, "地址": "火鍋望京廣順南大街路16號", "人均消費": 105, "評論數量": 1387}{"商傢名稱": "臉譜港式火鍋(酒仙橋麗都店)", "評分": 24.5, "地址": "火鍋芳園西路6號一層", "人均消費": 218, "評論數量": 39}
針對上述數據,可以采用如下方法將json編碼的字符串轉換為python數據結構dict:
# -*- coding: utf-8 -*- import json import codecs data = [] with codecs.open("hg.json", "r", "utf-8") as f: for line in f: dic = json.loads(line) data.append(dic) print(json.dumps(dic, indent=4, ensure_ascii=False, encoding='utf-8'))
保存字典數據到.json文件中
dic = {"商傢名稱": "井格老灶火鍋(望京新世界店)", "評分": 26.2, "地址": "火鍋望京廣順南大街路16號", "人均消費": 105, "評論數量": 1387} with codecs.open('hg.json','a', 'utf-8') as outf: json.dump(dic, outf, ensure_ascii=False) outf.write('\n')
在命令行中輸出字典時的亂碼問題
如果字典數據中有中文的話,print dic是無法正常顯示中文的,可通過下面的方法格式化輸出字典數據:
dic = {"北京": [446, 208.7, 110000], "天津": [454.2, 219.8, 120000], "上海": [498.6, 319.7, 310000]} print(json.dumps(dic, ensure_ascii=False, encoding='utf-8', indent=4))
將字符串數據轉化為字典數據
兩種轉化方法
user = "{'name' : 'LiHua', 'sex' : 'male', 'age': 18}" dic1 = eval(user) exec("dic2="+user)
補充
一般來說,json解碼時會從所提供的數據中創建出字典或者列表,如果想創建其它類型的對象,可以為json.loads()方法提供object_pairs_hook或者object_hook參數。下面的示例展示瞭我們應該如何將json數據解碼為OrderedDict(有序字典),這樣可以保持數據的順序不變。
>>> s = '{"name":"ACME", "SHARES":50, "PRICE":490}' >>> from collections import OrderedDict >>> data = json.load(s, object_pairs_hook=OrderedDict) >>> data OrderedDict([('name', 'ACME'), ('shares', 50), ('price', 490)] >>>
將dict數據寫入json文件中
現在獲取一個醫藥網站的數據,最終轉換成dict類型,需要將數據寫入JSON文件中,以方便後面數據的使用
with open('./medical.json', 'w',encoding='utf-8') as fp: json.dump(data, fp)
但得到的最終數據卻是這樣:
本來應該是正常的中文字符串,卻是ASCII編碼,因此在dump方法中添加一個ensure_ascii參數,原因是dump()方法將字典轉化為字符串,會默認將其中unicode碼以ascii編碼的方式輸入到字符串中
with open('./medical.json', 'w',encoding='utf-8') as fp: json.dump(data, fp,ensure_ascii=False)
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- Python操作JSON實現網絡數據交換
- Python序列化模塊之pickle與json詳解
- Python常用標準庫詳解(pickle序列化和JSON序列化)
- python 中的collections.OrderedDict() 用法
- Python中Json使用示例詳解