我們上一篇文章介紹了Python讀取、修改、保存xml文件,這篇文章將會介紹如何使用python來讀取,修改,保存json文件。
本文主要用到的python模塊是json。
一、讀取json文件
為了簡單起見,我自己造了一個json文件,主要結構如下。
下面我們將使用json的load方法。
with open("test.json",'r',encoding='utf-8') as load_f: load_dict = json.load(load_f) print(type(load_dict)) print(load_dict)
<class 'dict'> {'名字': 'CircleWang', 'age': 13, '朋友': ['張三', '李四', '王五']}
可以看到我們已經把json文件讀取稱為python中可以操作的字典格式了。這里需要注意的是在使用with open打開文件的時候如果文件中是包含有中文,需要用encoding=‘utf-8’的方式來打開否則讀取出來的字典里中文部分會是亂碼。
二、修改和保存json文件
保存python的字典或者列表為json文件(注意到只有字典和列表這兩種數據結構可以保存為json文件)。接下來我們將修改剛剛得到的load_dict,並再打開test.json文件保存修改。主要用到的模塊是json.dump()方法。
load_dict['名字']='其他' load_dict['age'] = 15 with open("test.json",'w',encoding='utf-8') as f: json.dump(load_dict, f,ensure_ascii=False)
可以看到文件已經被更改了。這里一定要注意兩個地方就是,一是打開文件的方式是采用‘utf-8’,二是在保存文件的時候json.dump()需要添加參數ensure_ascii = False,這樣才能夠保存下來中文的json成果。
三、還有兩個方法dumps和loads(不太常用)
1、dumps:將python中的 字典 轉換為 字符串
test_dict = {'名字':'CircleWang','age':13,'朋友':["張三",'李四','王五']} json_str = json.dumps(test_dict,ensure_ascii=False) print(type(json_str)) json_str
<class 'str'> '{"名字": "CircleWang", "age": 13, "朋友": ["張三", "李四", "王五"]}'
這里參數也需要注意一下,如果包含有中文的字典,在轉換為字符串的時候,需要修改參數ensure_ascii=False。
這里稍微提一句,采用這種方式轉化字典——>字符串和直接采用str(test_dict)是有區別的,主要區別在於雙引號和單引號的區別。大家可以看看差別。
json_str
'{"名字": "CircleWang", "age": 13, "朋友": ["張三", "李四", "王五"]}'
str(test_dict)
"{'名字': 'CircleWang', 'age': 13, '朋友': ['張三', '李四', '王五']}"
2、loads: 將 字符串 轉換為 字典
new_dict = json.loads(json_str) print(type(new_dict)) new_dict
<class 'dict'> {'名字': 'CircleWang', 'age': 13, '朋友': ['張三', '李四', '王五']}
這里需要注意一下,采用loads將字符串轉換為字典,必須要保證字符串是以單引號來作為兩端開始與結束,換句話說前面提到的直接把str(test_dict)放進這個函數里是無法轉換為字典的。