<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
json是一種獨立於程式語言和平臺的輕量級資料交換方式。和xml一樣,只是一種資料交換方式,與程式語言沒有依賴關係。各種支援json資料格式的程式語言,都會有對其進行解析的方法。xml和json都用於資料儲存和資料交換,但是現在json越來越流行,用的比xml多。json較xml的優點如下
{ "name": "安先生", "age": "24" }
如上,json資料是以key:value 的形式儲存在一對大括號{}中的,多個資料用逗號分隔,和python中的字典非常相像,但是json資料中的key和value全都是用雙引號包起來的。
python中提供了四種與json資料打交道的方法,即json.loads(),json.load(),json.dumps()和json.dump(),下面一一進行介紹。
json.loads(): 將json物件轉換為python物件,一般是將字串轉為python的字典dict。
import json json_data = '{"name": "安先生", "age": "24"}' print(type(json_data)) print(json_data) #json.loads()將json物件轉為python物件 py_data = json.loads(json_data) print(type(py_data)) print(py_data)
輸出:
>>>
<class 'str'>
{"name": "安先生", "age": "24"}
<class 'dict'>
{'name': '安先生', 'age': '24'}
json.load(): 讀取json檔案(解碼)
import json json_data = open('../練習檔案/json.json', 'r', encoding='utf-8') print(type(json_data)) data = json.load(json_data) print(type(data)) print(data)
>>>
<class '_io.TextIOWrapper'>
<class 'dict'>
{'name': '安先生', 'age': '24', 'job': '軟體測試'}
json.dumps(): 將python物件轉為json物件
import json py_data = {"name": "張三", "age": 24, "job": "法外狂徒"} print(type(py_data)) print(py_data) #indent控制縮排,ensure_ascii控制編碼 json_data = json.dumps(py_data, indent=4, ensure_ascii=False) print(type(json_data)) print(json_data)
其中indent引數是控制縮排的,ensure_ascii改變預設編碼(Unicode)
<class 'dict'> {'name': '張三', 'age': 24, 'job': '法外狂徒'} <class 'str'> { "name": "張三", "age": 24, "job": "法外狂徒" }
json.dump(): 向json檔案寫資料(編碼)
import json py_data = {"name": "張三", "age": 24, "job": "法外狂徒"} #先用json.dumps()將python物件轉為json物件 json_data = json.dumps(py_data) with open('../練習檔案/json.json', 'w', encoding='utf-8') as f: json.dump(json_data, f) #讀取資料 msg = open('../練習檔案/json.json', 'r') msg = json.load(msg) print(msg)
寫入的json檔案資料:
可以看到,讀寫的資料和我們想要的不一致,這是因為json.dump()預設寫的是Unicode編碼的資料,中文是不在Unicode編碼中的,所以顯示的時候就不會以中形式顯示,不過可以用json.dump()的ensure_ascii引數來控制,將其設定為False,
如下:
import json py_data = {"name": "張三", "age": "24", "job": "法外狂徒"} #轉換成json物件時,編碼預設為Unicode,ensure_ascii=False 取消預設編碼 with open('../練習檔案/json.json', 'w', encoding='utf-8') as f: json.dump(py_data, f, indent=4, ensure_ascii=False,) #讀取資料 msg = open('../練習檔案/json.json', 'r', encoding='utf-8') msg = json.load(msg) print(msg)
結果如下:
>>> {'name': '張三', 'age': '24', 'job': '法外狂徒'}
到此這篇關於python與json資料的互動詳情的文章就介紹到這了,更多相關python json資料互動內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45