【Python3 爬虫】U21_json文件处理
目录
1.什么是json?
json(JavaScript Object Notation)是一种轻量级的数据交换格式。简单和清晰的层次结构使得json成为理想的数据交换语言。易于阅读和编写,同时也易于机器解析和生成,并有效的提升网络传输效率。
json支持的数据格式:
- 对象(字典)。使用花括号
- 数组(列表)。使用方括号
- 整型和浮点型、布尔类型和null类型
- 字符串类型(字符串之间必须要用双引号,不能用单引号)
多个数据之间使用逗号隔开
注意:json本质就是一个字符串。
json数据在线格式化网站:https://www.json.cn/
2.将Python对象dump成一个json字符串
2.1 dumps转换为字符串
import json
emp = [
{
"ename":"Jack",
"age":18,
"addr":"Kunming"
},
{
"ename": "Lucy",
"age": 18,
"addr": "Qujing"
}
]
json_str = json.dumps(emp)
print(type(json_str))
print(json_str)
输出结果:
<class 'str'>
[{"ename": "Jack", "age": 18, "addr": "Kunming"}, {"ename": "Lucy", "age": 18, "addr": "Qujing"}]
从结果可以看出,json确实是一个字符串。
如果我们想要把上述得到的json写入到文件中,那么可以这么写
import json
emp = [
{
"ename":"Jack",
"age":18,
"addr":"Kunming"
},
{
"ename": "Lucy",
"age": 18,
"addr": "Qujing"
}
]
json_str = json.dumps(emp)
with open("emp.json","w") as f:
f.write(json_str)
2.2 dump写入数据到文件
但是在json中提供了一个更加方便的方法dump
,可以直接将数据写入到文件中,代码如下:
import json
emp = [
{
"ename":"Jack",
"age":18,
"addr":"Kunming"
},
{
"ename": "Lucy",
"age": 18,
"addr": "Qujing"
}
]
with open("emp.json","w") as f:
json.dump(emp,f)
如果是转换的内容中包含了中文,json在dump的时候,只能存放ascii
字符,因此会对中文进行转义,这时候,我们可以使用ensure_ascii=False
关闭这个特性。
# Author:Logan
import json
emp = [
{
"ename":"关羽",
"age":18,
"addr":"Kunming"
},
{
"ename": "张飞",
"age": 18,
"addr": "Qujing"
}
]
with open("emp.json", "w", encoding="utf-8") as f:
json.dump(emp, f, ensure_ascii=False)
转换后的结果如下:
3.将json转化为Python对象
3.1 loads
import json
json_str = '[{"ename": "关羽", "age": 18, "addr": "Kunming"}, {"ename": "张飞", "age": 18, "addr": "Qujing"}]'
emp = json.loads(json_str)
print(type(emp))
for e in emp:
print(e)
输出结果:
<class 'list'>
{'ename': '关羽', 'age': 18, 'addr': 'Kunming'}
3.2 直接从文件load
import json
with open("emp.json", "r", encoding="utf-8") as f:
emp = json.load(f)
print(type(emp))
for e in emp:
print(e)
作者:奔跑的金鱼
声明:书写博客不易,转载请注明出处,请支持原创,侵权将追究法律责任
个性签名:人的一切的痛苦,本质上都是对自己无能的愤怒
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!