Python读取、修改、保存json文件
我们上一篇文章介绍了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)放进这个函数里是无法转换为字典的。
以上内容如有错误,恳请指正