05 - python操作JSON

news2024/11/28 16:26:16

JSON认识

JSON,一种轻量级的文本数据交换格式,比XML更小更快,更易解析,爬虫经常要获取接口数据,接口数据就是JSON格式的。

格式示例

# 格式1:JSON 对象
{"name": "李嘉图", "age": 18}

# 格式2:JSON 数组
{
    "student":
        [
            {"name": "李嘉图", "age": 18},
            {"name": "凯撒", "age": 18},
            {"name": "楚子航", "age": 18}
        ]
}

常用的JSON模块方法

方法功能
json.dumps(obj)        将python数据类型转换为json格式的字符串
json.dump(obj, filePath)将python数据类型转换并保存到json格式的文件内
json.loads(s)将json格式的字符串转换为python的类型
json.load(filePath)从json格式的文件中读取数据并转换成python的类型

带s的都是和字符串相关的,不带s的都是和文件相关的。

json.dumps()

将python数据类型转换为json格式的字符串

test_json.py

# 导入json模块
import json

# 创建person的人员字典
person = {"name": "李嘉图", "age": 18, "sex": "男"}
print(type(person))

# 将python对象转换为json字符串
jsonStr = json.dumps(person)
print(type(jsonStr))

输出结果

<class 'dict'>
<class 'str'>

格式化json,使方便阅读

# 导入json模块
import json

# 创建person的人员字典
person = {"name": "李嘉图", "age": 18, "sex": "男"}

# 将python对象转换为json字符串
jsonStr = json.dumps(person)
print(jsonStr)

# json字符串格式化
print(json.dumps(person, sort_keys=True, indent=4, separators=(',', ': ')))

输出结果

{"name": "\u674e\u5609\u56fe", "age": 18, "sex": "\u7537"}
{
    "age": 18,
    "name": "\u674e\u5609\u56fe",
    "sex": "\u7537"
}
  • sort_keys:是否排序
  • indent:定义缩进距离
  • separators:是一个元组,定义分隔符类型

将json字符串写入json文件

json_write.py

# 导入json模块
import json

# 创建person的人员字典
person = {"name": "李嘉图", "age": 18, "sex": "男"}

# 将python对象转换为json字符串
jsonStr = json.dumps(person, sort_keys=True, indent=4, separators=(',', ': '))

# 写入文件
with open('json_write.json', 'w', encoding='utf-8') as f:
    f.write(jsonStr)

运行程序

json.dump()

同样是将字符串存储到json格式的文件内,使用dump()不需要write()方法

# 导入json模块
import json

# 创建person的人员字典
person = {"name": "李嘉图", "age": 18, "sex": "男"}

# 将python对象转换为json字符串
json.dump(person, open('json_dump.json', 'w'), sort_keys=True, indent=4, separators=(',', ': '))

输出

直接写入文件用下面的方便点,但是如果在写入的过程中需要操作字符串的业务,就选上面那种。

json.loads()

# 导入json模块
import json

# 创建person的人员字典
person = {"name": "李嘉图", "age": 18, "sex": "男"}

# 将python对象转换为json字符串
jsonStr = json.dumps(person)
print(type(jsonStr))

# 将json字符串转换为python类型
python_type = json.loads(jsonStr)
print(python_type)
print(type(python_type))

输出结果

<class 'str'>
{'name': '李嘉图', 'age': 18, 'sex': '男'}
<class 'dict'>

在实际的业务中,获取到了接口的json数据,转换成python对象之后,就可以进行后续的业务操作。

读取json文件

# 导入json模块
import json

f = open('json_write.json')
json_str = f.read()
python_type = json.loads(json_str)
print(python_type)
print(type(python_type))

f.close()

输出

{'age': 18, 'name': '李嘉图', 'sex': '男'}
<class 'dict'>

json.load()

# 导入json模块
import json

python_type = json.load(open('json_write.json'))
print(python_type)
print(type(python_type))

输出

{'age': 18, 'name': '李嘉图', 'sex': '男'}
<class 'dict'>

两者不同之处,上面的传入的是json字符串,下面的传入的是文件对象。

json字符串解析

# 导入json模块
import json

# 将json文件中的json对象转换为python对象
python_type = json.load(open('json_write.json'))

# 解析python对象
print(python_type.keys())
print(python_type.values())
print(python_type["name"])
print(python_type["age"])
print(python_type["sex"])

输出结果

dict_keys(['age', 'name', 'sex'])
dict_values([18, '李嘉图', '男'])
李嘉图
18
男

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1432636.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pytorch索引和切片

目录 1. 按索引方式取数据2. 以python切片方式取数据3. 指定index取数据4. ...代表除其前后指定维度外的所有维度5. masked_select() 使用掩码选择元素6. take 矩阵打平后选取 1. 按索引方式取数据 a[0,0,2,4] 其中0&#xff0c;0&#xff0c;2&#xff0c;4是索引从0开始 2. …

3.0 Hadoop 概念

本章着重介绍 Hadoop 中的概念和组成部分&#xff0c;属于理论章节。如果你比较着急可以跳过。但作者不建议跳过&#xff0c;因为它与后面的章节息息相关。 Hadoop 整体设计 Hadoop 框架是用于计算机集群大数据处理的框架&#xff0c;所以它必须是一个可以部署在多台计算机上…

灵活应对:策略模式在软件设计中的应用

策略模式是一种行为型设计模式&#xff0c;它允许定义一系列算法&#xff0c;并将每个算法封装起来&#xff0c;使它们可以互换使用。策略模式让算法的变化独立于使用算法的客户端&#xff0c;使得在不修改原有代码的情况下切换或扩展新的算法成为可能。 使用策略模式的场景包…

无人机遥感技术在地质灾害监测应用分析,多旋翼无人机应急救援技术探讨

地质灾害是指在地球的发展演变过程中&#xff0c; 由各种自然地质作用和人类活动所形成的灾害性地质事件。给人民的生命和财产安全带来严重威胁&#xff0c;因此有必要开展地质灾害预测预报、灾害应急和风险区划 遥感技术的快速发展为我们提供了一种获取实时灾害信息的可靠手段…

使用WPS制作三线表

点击边框和底纹点击1、2、3、4并且应用于表格点击确定 再次选中表格点击右键表格属性选择边框和底纹 选中表格第一行右键点击表格属性选择边框和底纹 如果表格中存在虚线

离线数仓-数据治理

目录 一、前言 1.1 数据治理概念 1.2 数据治理目标 1.3 数据治理要解决的问题 1.3.1 合规性 元数据合规性 数据质量合规性 数据安全合规性 1.3.2 成本 存储资源成本 计算资源成本 二、数据仓库发展阶段 2.1 初始期 2.2 扩张期 2.3 缓慢发展期 2.4 变革期 三、…

基于hadoop+spark的大规模日志的一种处理方案

概述: CDN服务平台上有为客户提供访问日志下载的功能,主要是为了满足在给CDN客户提供服务的过程中,要对所有的记录访问日志,按照客户定制的格式化需求以小时为粒度(或者其他任意时间粒度)进行排序、压缩、打包,供客户进行下载,以便进行后续的核对和分析的诉求。而且CDN…

判断和循环 - switch语句和练习

switch语句格式 switch(表达式) {case 值1:语句体1;break;case 值2:语句体2;break;...default:语句体n1;break; }执行流程&#xff1a; 首先计算表达式的值。依次和case后面的值进行比较&#xff0c;如果有对应的值&#xff0c;就会执行相应的语句&#xff0c;在执行的过程中…

vue项目线上页面刷新报404 解决方法

一.修改配置文件 nginx.conf &#xff0c;并重新加载或重启 我的nginx版本是1.9.9 location / {try_files $uri $uri/ /index.html; }原因&#xff1a; 打包后的dist下只有一个 index.html 文件及一些静态资源&#xff0c;这个是因为Vue是单页应用(SPA)&#xff0c;只有一个…

《Python 网络爬虫简易速速上手小册》第6章:Python 爬虫的优化策略(2024 最新版)

文章目录 6.1 提高爬虫的效率6.1.1 重点基础知识讲解6.1.2 重点案例&#xff1a;使用 asyncio 和 aiohttp 实现异步爬虫6.1.3 拓展案例 1&#xff1a;利用 Scrapy 的并发特性6.1.4 拓展案例 2&#xff1a;使用缓存来避免重复请求 6.2 处理大规模数据爬取6.2.1 重点基础知识讲解…

新加坡大带宽服务器优势特点

随着互联网技术的不断进步&#xff0c;大带宽服务器在满足高速数据传输需求方面发挥着越来越重要的作用。新加坡&#xff0c;作为全球互联网基础设施的重要枢纽&#xff0c;其大带宽服务器在全球范围内备受关注。本文将深入探讨新加坡大带宽服务器的优势特点&#xff0c;以及如…

蓝桥杯每日一题----区间dp

前言 暂时没啥好说的&#xff0c;直接进入正题吧 引入 涂色PAINT 读题发现要求的是使一段区间满足要求的最小操作次数&#xff0c;考虑用动态规划去做。 第一步&#xff1a;考虑缩小规模&#xff0c;这里的规模其实就是区间长度&#xff0c;那么dp数组应该可以表示某个区间&…

白话 Transformer 原理-以 BERT 模型为例

白话 Transformer 原理-以 BERT 模型为例 第一部分:引入 1-向量 在数字化时代,数学运算最小单位通常是自然数字,但在 AI 时代,这个最小单元变成了向量,这是数字化时代计算和智能化时代最重要的差别之一。 举个例子:银行在放款前,需要评估一个人的信用度;对于用户而…

解析Python中HTTP代理的常见问题

在Python编程中&#xff0c;HTTP代理是一个经常被提及的概念&#xff0c;尤其在处理网络请求和爬虫时。但与此同时&#xff0c;使用HTTP代理也经常会遇到一些令人头疼的问题。接下来&#xff0c;就让我们一起解析一下Python中使用HTTP代理时常见的那些问题。 1. 代理服务器无响…

06、全文检索 -- Solr -- Solr 全文检索之在图形界面管理 Core 的 Schema(演示对 普通字段、动态字段、拷贝字段 的添加和删除)

目录 Solr 全文检索之管理 Schema使用Web控制台管理Core的Schema3 种 字段解释&#xff1a;Field&#xff1a;普通字段Dynamic Field&#xff1a;动态字段Copy Field&#xff1a;拷贝字段 演示&#xff1a;添加 普通字段&#xff08; Field &#xff09;演示&#xff1a;添加 动…

CSS写渐变边框线条

box-sizing: border-box; border-top: 1px solid; border-image: linear-gradient(to right, red, blue) 1;

建筑行业数字化:从设计到运维的全面革新

随着科技的快速发展&#xff0c;数字化技术在各行各业中的应用越来越广泛。建筑行业作为传统产业&#xff0c;也在积极拥抱数字化技术&#xff0c;以提高效率、降低成本并实现可持续发展。本文将主要探讨建筑行业数字化的几个关键领域&#xff0c;包括建筑设计数字化、施工管理…

CDH6.3.2 多 Spark 版本共存

一 部署Spark客户端 1.1 部署spark3客户端 tar -zxvf spark-3.3.1-bin-3.0.0-cdh6.3.2.tgz -C /opt/cloudera/parcels/CDH/lib cd /opt/cloudera/parcels/CDH/lib mv spark-3.3.1-bin-3.0.0-cdh6.3.2/ spark3将 CDH 集群的 spark-env.sh 复制到 /opt/cloudera/parcels/CDH/li…

《Python 网络爬虫简易速速上手小册》第3章:Python 网络爬虫的设计(2024 最新版)

文章目录 3.1 设计高效的爬取策略3.1.1 重点基础知识讲解3.1.2 重点案例&#xff1a;使用 Scrapy 框架进行并发爬取3.1.3 拓展案例 1&#xff1a;使用 Requests 和 gevent 进行异步请求3.1.4 拓展案例 2&#xff1a;利用缓存机制避免重复请求 3.2 管理爬虫的请求频率3.2.1 重点…

【AIGC核心技术剖析】AI生成音乐:MAGNeT一种直接操作多个音频令牌流的掩码生成序列建模方法

MAGNeT是一种直接操作多个音频令牌流的掩码生成序列建模方法。与先前的工作不同&#xff0c;MAGNeT由一个单阶段、非自回归的变压器组成。在训练期间&#xff0c;论文使用掩码调度器预测从掩码令牌中获得的跨度&#xff0c;而在推断期间&#xff0c;论文通过多个解码步骤逐渐构…