在爬虫或者处理数据的时候经常会遇到json格式的字符串或者是json格式的文件,使用json包来处理相当方便。
dump、dumps、load、loads的区别
dumps、loads区别
dumps和loads它们是一对相反的操作,dumps是一个编码(encoding)的过程,loads是一个解码(decoding)的过程,他们有一个共同点,都是字符串的处理。
其中dumps是将json格式的字符串编码成字符串写入到文件中,而loads看名字也能猜个一二,是加载json格式的字符串,读取成python格式的对象。
下面是dumps和loads的例子
# 引入相应包
import json
# 定义一个字典
s = {'a': 1, 'b': 2}
# 转换成字符串
j_s = json.dumps(s)
j_s
Out[7]: '{"a": 1, "b": 2}'
json_d = json.loads(j_s)
json_d
Out[10]: {'a': 1, 'b': 2}
这里经常有人说json就是字典,其实不是的,虽然上面的是字典,也有其他形式,在python中json文件转成python对象,主要有两种存在形式,一种是字典,另一种是列表(list)如果是json数组转成python对象就会转成list。
dump、load区别
上面讲到dumps和loads它们都是针对字符串和json对象之间的编码和解码,同样dump和load也是编码和解码的过程,只不过它们处理的对象是文件,这是最主要的区别。
# 读取json格式的文件
with open("json_file.json") as f:
json_list = (json.load(f))
print(json_list)
[{'a': 1, 'b': 2, 'c': 3}, {'a': 3, 'b': 1, 'c': 3}, {'a': 4, 'b': 2, 'c': 3}]
# 保存成json文件
with open('new_json.json', 'w') as f2:
json.dump(json_list, f2)
上面这个例子就是将python中的另一个json对象类型list的读写操作,
按照如下记忆:
文件:dump、load
字符串:dumps、loads
编码:dump、dumps
解码:load、loads