找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3769326|回复: 0

Python爬虫基础讲解:数据持久化——json

[复制链接]

该用户从未签到

发表于 2021-5-25 16:46:16 | 显示全部楼层 |阅读模式

您需要 登录 才可以下载或查看,没有账号?立即注册

×
目的:将Python对象编码为json字符串,并将JSON字符串解码为Python对象。
json模块提供了API,将内存中的Python对象转换为」JSON序列。JSON具有以多种语言(尤其是JavaScript)实现的优点。它在RESTAPI中 Web服务端和客户端之间的通信被广泛应用,同时对于应用程序间通信需求也很有用。下面演示如何将一个Python数据结构转换为JSON:


1. 编码和解码
Python 的默认原生类型(str] int,float,list,tuple和dict)。
import jsondata = {'name ' : 'ACME',' shares ' : 100]'price ' : 542.23}json_str = json.dumps(data)print(json_str)表面上看,类似于Python repr的输出。虽然内容看似是一样,但是类型却已经发生改变
print(type(json_str))从无序的字典到有序的字符串,这个过程被称之为序列化。
最终我们将json保存到文件
with open('data.json ',mode='w',encoding='utf-8') as f:f.write(json_str)1.1 中文字符串问题
import jsondata = {'name ' : '青灯','shares': 100]'price' : 542.23}#将字典序列化为jsonjson_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}解决办法: json_str = json. dumps(data,ensure_ascii=False)
2. 读取数字
将json数据变为字典类型的这个过程被称之为反序列化
#读取json数据with open( ' data.json ', 'r', encoding='utf-8') as f:#反序列化data = json.1oad(f)#打印数据print(data)print(data[ 'name ',)3. 格式化输出
JSON的结果是更易于阅读的。dumps函数接受几个参数以使输出更易读结果。
import jsondata = {'a ' : 'A','b' : (2,4),'c' : 3.0}print( 'DATA: ', repr(data)) # DATA: { 'a' : 'A', 'b ': (2,4),'c': 3.0}unsorted = json.dumps(data)print( '7SON: ', json.dumps(data)) #JSON: {"a": "A","b":[2,4,,"c": 3.03}编码,然后重新解码可能不会给出完全相同类型的对象。
特别是,元组成为了列表。
JSON跟Python中的字典其实是一样一样的,事实上JSON的数据类型和Python的数据类型是很容易找到对应关系的,如下面两张表所示。

                               
登录/注册后可看大图
回复

使用道具 举报

网站地图|页面地图|文字地图|Archiver|手机版|小黑屋|找资源 |网站地图

GMT+8, 2024-11-21 23:54

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表