遇到JSON文件就头大?掌握Python这几种方法,让你轻松应对

news2024/11/24 6:26:16

目录

1、标准库json模块 📄

1.1 json.load()函数介绍

1.2 json.loads()处理字符串

1.3 使用json.dump()写入JSON

1.4 json.dumps()美化输出

1.4 错误处理与编码问题

1.5 高效读取大文件技巧

2、第三方库simplejson加持 🔧

2.1 安装与导入simplejson

2.2 性能优势与特性

2.3 simplejson高级用法

2.3.1 自定义编码和解码

2.3.2 使用use_decimal=True处理高精度数值

3、使用pandas高效解析 📊

3.1 一维数据转换

3.2 复杂JSON结构处理

3.3 数据清洗与分析

4、requests库中的JSON解析 🔌

4.1 网络请求获取JSON数据

4.1 请求JSON数据

4.2 自动处理gzip压缩

4.3 异常重试策略

4.4 异常处理与状态码检查

5、使用第三方库ujson高速解析 🚀

5.1 安装与导入ujson

5.2 性能对比测试

5.3 特性与限制说明

6、总结与实战建议 🎯



1、标准库json模块 📄

在Python 中处理JSON数据时,标准库json提供了强大而简洁的功能。我们将深入探讨如何利用该模块高效地解析与生成JSON文件,涵盖从基础到进阶的使用方法。

1.1 json.load()函数介绍

json.load()是读取JSON文件并将其内容转换为Python对象的便捷方式。它接受一个文件对象作为参数,返回解析后的Python数据结构(通常是字典或列表)。

代码示例:

import json

with open('example.json', 'r', encoding='utf-8') as file:
    data = json.load(file)
print(data)

输出: 假设example.json包含{"name": "Alice", "age": 30},则输出将是{'name': 'Alice', 'age': 30}

1.2 json.loads()处理字符串

当面对的是JSON格式的字符串而非文件时 ,json.loads()便派上用场。它将JSON字符串直接转换为Python数据类型。

代码示例:

json_str = '{"name": "Bob", "age": 28}'
parsed_data = json.loads(json_str)
print(parsed_data)

输出{'name': 'Bob', 'age': 28}

1.3 使用json.dump()写入JSON

要将Python对象序列化为JSON字符串并保存至文件,json.dump()是理想之选。它接受两个主要参数:一个是需要序列化的Python对象,另一个是用于写入的文件对象。

代码示例:

data_to_write = {"name": "Charlie", "age": 25}
with open('output.json', 'w', encoding='utf-8') as file:
    json.dump(data_to_write, file, ensure_ascii=False, indent=4)

此例中 ,ensure_ascii=False保证非ASCII字符正确显示 ,indent=4则使得输出更加易读。

1.4 json.dumps()美化输出

json.dump()相似 ,json.dumps()用于将Python对象转换成JSON格式的字符串。它适用于需要JSON字符串而非文件操作的场景 ,并同样支持美化输出设置。

代码示例:

data_for_string = {"name": "David", "age": 32}
json_string = json.dumps(data_for_string, ensure_ascii=False, indent=4)
print(json_string)

输出:

{
    "name": "David",
    "age": 32
}

1.4 错误处理与编码问题

在处理JSON时,可能会遇到格式错误或编码不匹配的情况。为了增强代码的健壮性,应当加入异常处理机制。同时,指定正确的字符编码也是必要的:

try:
    with open('data.json', encoding='utf-8') as file:
        data = json.load(file)
except json.JSONDecodeError as e:
    print(f"解析错误: {e}")
except UnicodeDecodeError as e:
    print(f"编码错误: {e}")
else:
    print(data)

这段代码尝试打开并读取一个JSON文件 ,如果遇到JSON格式错误或编码问题,会捕获对应的异常并打印错误信息。

1.5 高效读取大文件技巧

处理大型JSON文件时,直接加载整个文件到内存可能不是最佳选择。可以采用逐行读取或分块读取的方式,结合ijson这样的流式解析库来提高效率。但这里我们展示一种基础的逐行读取JSON数组元素的方法:

import json

def parse_large_json(file_path):
    with open(file_path, 'r', encoding='utf-8') as file:
        for line in file:
            item = json.loads(line.strip())
            # 这里处理每一项数据,例如打印
            print(item)

parse_large_json('large_data.jsonl')

此示例假设large_data.jsonl是一个每行包含一个有效JSON对象的文本文件,适合处理大型数据集。

通过上述示例,我们全面了解了Python标准库json模块的核心功能,包括读取、解析JSON文件,处理JSON字符串,以及如何优雅地输出或保存JSON数据。掌握这些技能,无论是处理网络API响应 ,还是存储配置信息,都将变得轻而易举。

2、第三方库simplejson加持 🔧

在处理复杂的JSON数据或追求更高性能时,Python社区提供了simplejson这个第三方库作为标准库json的有力补充。它不仅兼容Python 3.11 ,还引入了一些额外特性和性能上的提升。

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

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

相关文章

韩国版AlphaFold?深度学习模型AlphaPPIMd:用于蛋白质-蛋白质复合物构象集合探索

在生命的舞台上,蛋白质扮演着不可或缺的角色。它们是生物体中最为活跃的分子,参与细胞的构建、修复、能量转换、信号传递以及无数关键的生物学功能。同时,蛋白质的结构与其功能密切相关,而它们的功能又通过与蛋白质、多肽、核苷酸…

node调试

vscode安装插件:JavaScript Debugger (Nightly) 点击后生成一个launch.json文件 打断点,并发送一个请求来执行代码到断点处 按右上的向下箭头,进入源码,进行查看,左边查看变量等值

护眼台灯攻略:护眼台灯真的有用吗?

当前,近视问题在人群中愈发普遍,据2024年的统计数据显示,我国儿童青少年的总体近视率已高达52.7%。近视的人越来越多,近视背后还潜藏着视网膜脱离、白内障、开角型青光眼等眼部疾病,严重的情况甚至可能引发失明。长时间…

windows 环境下使用git命令导出差异化文件及目录

一、找出差异化的版本(再此使用idea的show history) 找到两个提交记录的id 分别为: 二、使用git bash执行命令(主要使用 tar命令压缩文件) 输出结果:

Linux系统管理:虚拟机Almalinux 9.4 安装

目录 一、理论 1.Almalinux 二、实验 1.虚拟机Almalinux 9.4 安装准备阶段 2.安装Almalinux 9.4 3.Termius远程连接 一、理论 1.Almalinux (1) 简介 Almalinux是一个开源、社区拥有和管理、免费的企业Linux发行版。专注于长期稳定性,并提供强大的生产级…

【linux-imx6ull-定时器与中断】

目录 1. 前言2. Linux软件定时器2.1 内核频率选择2.2 重要的API函数2.3 Linux软件定时器的使用配置流程 4. Linux中断4.1 简单中断使用4.1.1 简要说明4.1.2 重要的API函数4.1.3 中断的简要配置流程 4.2. 中断的上半部和下半部4.2.1 tasklet实现下半部4.2.2 work实现下半部 1. 前…

终结国企虚假贸易:监管闭环下的关系排查与风控增强

2024年5月28日,国务院正式公布《国有企业管理人员处分条例》(以下简称《条例》),将于2024年9月1日起施行。作为国家经济的重要支柱,国有企业的管理人员在企业运营中扮演着至关重要的角色,《条例》的颁布&am…

调用腾讯智能云实现车辆信息识别

目录 1. 作者介绍2. 算法介绍2.1 腾讯云介绍2.2 API介绍 3. 调用腾讯智能云实现车辆信息识别3.1 准备工作3.2 完整代码3.3 结果分析 1. 作者介绍 汤明乐,男,西安工程大学电子信息学院,2023级研究生 研究方向:机器视觉与人工智能 …

蓝牙BLE上位机工具开发理论线索梳理_3.WINRT Devices设备相关

1.WINRT关于Devices设备相关的命名空间 关于WINRT科以参考下面这篇博文学习理解。以下列出Devices设备相关的API命名空间。 理解WinRT - 厚积薄发 - C博客 Windows.Devices此命名空间提供对低级别设备提供程序的访问,包括 ADC、GPIO、I2 C、PWM 和 SPI。Windows.D…

提醒:网站使用微软雅黑字体的三种方式,两种侵权,一种不侵权。

大家都知道微软雅黑是windows系统的默认字体,但是不知道微软雅黑的版权归属方正字体,而且方正字体仅仅授权了微软在windows系统中使用该字体,脱离了windows使用,那是极易中招的,网页字体使用是前端开发的工作之一&…

【Python】教你彻底了解Python中的数据科学与机器学习

​​​​ 文章目录 一、数据科学的基本概念1. 数据收集2. 数据清洗3. 数据分析4. 数据可视化5. 机器学习 二、常用的数据科学库1. Pandas1.1 创建Series和DataFrame1.2 数据操作 2. NumPy2.1 创建数组2.2 数组操作 3. Scikit-learn3.1 数据预处理3.2 特征工程 三、数据预处理与…

随手记:商品信息过多,展开收起功能

UI原型图&#xff1a; 页面思路&#xff1a; 在商品信息最小item外面有一个包裹所有item的标签&#xff0c;控制这个标签的高度来实现展开收起功能 <!-- 药品信息 --><view class"drugs" v-if"inquiryInfoSubmitBtn"><view class"…

天降流量于雀巢?元老品牌如何创新营销策略焕新生

大家最近有看到“南京阿姨手冲咖啡”的视频吗&#xff1f;三条雀巢速溶咖啡入杯&#xff0c;当面加水手冲&#xff0c;十元一份售出&#xff0c;如此朴实的售卖方式迅速在网络上走红。而面对这一波天降的热度&#xff0c;雀巢咖啡迅速做出了回应&#xff0c;品牌组特地去到了阿…

PySpark特征工程(I)--数据预处理

有这么一句话在业界广泛流传&#xff1a;数据和特征决定了机器学习的上限&#xff0c;而模型和算法只是逼近这个上限而已。由此可见&#xff0c;特征工程在机器学习中占有相当重要的地位。在实际应用当中&#xff0c;可以说特征工程是机器学习成功的关键。 特征工程是数据分析…

交流负载箱的使用场景和应用范围是什么?

交流负载箱模拟实际用电设备运行状态的电力测试设备&#xff0c;主要用于对各种电气设备、电源系统、发电机组等进行性能测试、质量检验和安全评估。交流负载箱的使用场景和应用范围非常广泛&#xff0c;涵盖了电力、通信、能源、交通等多个领域。 1. 电力行业&#xff1a;在电…

什么是电脑监控软件?六款知名又实用的电脑监控软件

电脑监控软件是一种专为监控和记录计算机活动而设计的应用程序&#xff0c;它能够帮助用户&#xff08;如家长、雇主或系统管理员&#xff09;了解并管理目标计算机的使用情况。这些软件通常具有多样化的功能&#xff0c;包括但不限于屏幕捕捉、网络行为监控、应用程序使用记录…

北斗导航:让科技引领未来出行

北斗导航是中国自主研发的卫星导航系统&#xff0c;由一系列北斗卫星和地面控制平台组成。它的研发始于上世纪80年代&#xff0c;经过几十年的发展&#xff0c;如今已成为全球领先的卫星导航系统之一。北斗导航凭借其优秀的性能&#xff0c;为我们的出行提供了准确、可靠的定位…

Spring Boot + EasyExcel + SqlServer 进行批量处理数据

前言 在日常开发和工作中&#xff0c;我们可能要根据用户上传的文件做一系列的处理&#xff0c;本篇文章就以Excel表格文件为例&#xff0c;模拟用户上传Excel文件&#xff0c;讲述后端如何高效的进行数据的处理。 一.引入 EasyExcel 依赖 <!-- https://mvnrepository.com/…

数据预处理——调整方差、标准化、归一化(Matlab、python)

对数据的预处理&#xff1a; (a)、调整数据的方差&#xff1b; (b)、标准化&#xff1a;将数据标准化为具有零均值和单位方差&#xff1b;&#xff08;均值方差归一化(Standardization)&#xff09; (c)、最值归一化&#xff0c;也称为离差标准化&#xff0c;是对原始数据的…

Elasticsearch 第二期:倒排索引,分析,映射

前言 正像前面所说&#xff0c;ES真正强大之处在于可以从无规律的数据中找出有意义的信息——从“大数据”到“大信息”。这也是Elasticsearch一开始就将自己定位为搜索引擎&#xff0c;而不是数据存储的一个原因。因此用这一篇文字记录ES搜索的过程。 关于ES搜索计划分两篇或…