爬虫中的数据保存----json文件的保存

一.json数据的简介

目的: 将 Python 对象编码为 JSON 字符串,并将 JSON 字符串解码为 Python 对象。

json 模块提供了 API,将内存中的 Python 对象转换为 JSON 序列。JSON 具有以多种语言(尤其是JavaScript)实现的优点。它在 REST API 中 Web 服务端和客户端之间的通信被广泛应用,同时对于应用程序间通信需求也很有用。

1. json 的编码和解码

Python 的默认原生类型( str , int , float , list , tuple ,和 dict )。


import json
data = {
	'name': 'ACME',
	'shares': 100,
	'price': 542.23
}
json_str = json.dumps(data)
print(json_str)
print(type(json_str))

# 保存
with open('data.json', mode='w', encoding='utf-8') as f:
	f.write(json_str)

从无序的字典到有序的字符串,这个过程被称之为序列化。

1. 中文字符的问题


import json
data = {
	'name': '张三',
	'shares': 100,
	'price': 542.23
}
# 将字典序列化为json
json_str = json.dumps(data)
# 写入 json 数据
with open('data.json', mode='w', encoding='utf-8') as f:
f.write(json_str)

这时的输出:
# filename:data.json
{"name": "\u9752\u706f", "shares": 100, "price": 542.23}

解决办法:
# ensure_ascii=False  不使用默认的unicode编码
 json_str = json.dumps(data, ensure_ascii=False)

2. 数据的读取


# 读取 json 数据
with open('data.json', 'r', encoding='utf-8') as f:
# 反序列化
	data = json.load(f)
# 打印数据
print(data)
print(data['name'])

3. 格式化输出

JSON 的结果是更易于阅读的。 dumps() 函数接受几个参数以使输出更易读结果。

import json
data = {'a': 'A''b': (24)'c': 3.0}
print('DATA:'repr(data)) # DATA: {'a': 'A', 'b': (2, 4), 'c': 3.0}
unsorted = json.dumps(data)
print('JSON:', json.dumps(data)) # JSON: {"a": "A", "b": [2, 4], "c": 3.0}

解释:

编码,然后重新解码可能不会给出完全相同类型的对象。
特别是,元组成为了列表。
JSON跟Python中的字典其实是一样一样的,事实上JSON的数据类型和Python的数据类型是很容易找到
对应关系的,
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不想做程序猿的员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值