数据导入与预处理-第4章-Python标准库之json

news2025/1/16 14:15:39

文章目录

  • 资源
  • json概述
  • json案例
    • dumps案例
    • dump案例
      • 中文编码问题
      • 格式化问题
    • loads案例
    • load案例

资源

参考:https://zhuanlan.zhihu.com/p/436465279
https://blog.csdn.net/impoijimlq/article/details/130445399

json概述

什么是json

json是一种轻量级的文本数据
交换格式json独立于其他语言
json具有自我描述性,更好理解
json比xml更小、更快,更容易解析

json格式

{
    "name""lhh",
    "age":"20"
}

json标准库的作用

使用json字符串生成python对象(load)
由python对象格式成为json字符串(dump)

数据的类型转换

将数据从python转换到json格式,在数据类型上会有什么变化呢,如下表所示:

PythonJSON
dictobject
list,tuplearray
strstring
int,float,int-number
Truetrue
Falsefalse
Nonenull

使用方式

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

json案例

dumps案例

import json
#从python对象格式化一个json  string
person = {"name":"张某某","gender":"man","age":25}
print(person)

#转换为json字符串
jsonStr = json.dumps(person,)
print(jsonStr)

#转换为json字符串 中文编码避免
jsonStr = json.dumps(person,ensure_ascii=False)
print(jsonStr)

输出为:
在这里插入图片描述

在python中定义json的时候,可以使用单引号,也可以使用双引号。但是最后在输出的时候,输出的是一个单引号,以字典的方式进行输出的。
我们进行json格式转换之后,我们就会变成一个标准的json格式的字符串,即双引号修饰的字符串
对于包含中文的内容,会被转码为\u开头,这时可以通过ensure_ascii=False完成中文输出。json_dumps(dict)时,如果dict包含有汉字,一定加上ensure_ascii=False。否则按参数默认值True,意思是保证dumps之后的结果里所有的字符都能够被ascii表示,汉字在ascii的字符集里面,因此经过dumps以后的str里,汉字会变成对应的unicode。

dump案例

中文编码问题

import json
#从python对象格式化一个json  string
person = {"name":"张某某","gender":"man","age":25}
print(person)

#转换为json文件
json.dump(person,open("data.json","w"))


#转换为json文件,文件内容为中文  
json.dump(person,open("data1.json","w",encoding="utf-8"),ensure_ascii=False)

输出为:
在这里插入图片描述

格式化问题

import json
#从python对象格式化一个json  string
person = {"name":"张某某","gender":"man","age":25}
print(person)

#转换为json文件
json.dump(person,open("data.json","w"))


#转换为json文件,文件内容为中文  
json.dump(person,
          open("data1.json","w",encoding="utf-8"),
          ensure_ascii=False,
          indent=4)

输出为:
在这里插入图片描述

import json
#从python对象格式化一个json  string
person = {"name":"张某某","gender":"man","age":25}
print(person)

#转换为json文件,文件内容为中文  
json.dump(person,
          open("data1.json","w",encoding="utf-8"),
          ensure_ascii=False,
          indent=4,
          sort_keys=True)

输出为:
在这里插入图片描述

loads案例

import json
 
data = {'name':'张某某','gender':'man','age':18}
# 将Python对象编码成json字符串
# print(json.dumps(data))
# 将json字符串解码成Python对象
a = json.dumps(data)
print(json.loads(a))
print('+'*10)
 
data = (1,2,3,4)
data_json = [1,2,3,4]
#将Python对象编码成json字符串
print(json.dumps(data))
print(json.dumps(data_json))
print('+'*10)
 
#将Python对象编码成json字符串
a = json.dumps(data)
b = json.dumps(data_json)
print('+'*10)
#将json字符串编码成Python对象
print(json.loads(a))
print(json.loads(b))

输出为
在这里插入图片描述

load案例

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

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

相关文章

【代码软实力】职场高效沟通技巧

一、沟通三要素 二、什么是沟通 三、沟通的难点 四、向上沟通-结构化表达 上级结构化表达的案例 五、平级沟通-非暴力沟通 平级非暴力沟通案例 六、下级沟通-行为影响结果原则BIC 下级沟通案例分析 思维导图

如何在MT4和MT5复制交易?有缺点吗?anzo capital昂首资本1秒答

很多投资者不知道如何在MT4和MT5上复制交易信号?其实很简单,今天anzo capital昂首资本1分钟解答,复制交易的方法包括: 在MetaQuotes社区进行交易复制和信号的传播。MT4和MT5均具备连接到这个社区的功能。以下是使用该功能的步骤&…

Crypto(2)攻防世界-幂数加密

先看题,给出了flag格式和幂数加密的方式。 附件里的内容为8842101220480224404014224202480122 正常的二进制幂数加密只有0,1,2,3,4,5,是不会出现8的。通过百度了解到这是云影密码、 简单说来…

Anaconda安装

前言: 在学习机器学习时,一般都会使用Anaconda。 Anaconda是一个强大的开源数据科学平台,它将很多好的工具整合在一起,极大地简化了使用者的工作流程,并能够帮助使用者解决一系列数据科学难题。 有小伙伴纠结先安装python还是安…

【好玩的开源项目】Linux系统之部署跳一跳经典小游戏

【好玩的开源项目】Linux系统之部署跳一跳经典小游戏 一、跳一跳小游戏介绍1.1 跳一跳小游戏简介1.2 项目地址 二、本次实践介绍2.1 本地环境规划2.2 本次实践介绍 三、安装httpd软件3.1 检查yum仓库3.2 安装httpd软件3.3 启动httpd服务3.4 查看httpd服务3.5 防火墙和selinux设…

通过这个技术,浏览器可以运行Node.js、Rust、Python、PHP、C++、Java代码了!

近日,WebContainers 发布重要更新,WASI(WebAssembly 系统接口)已全面集成到 WebContainers 中。这是一个重要里程碑,它扩大了可以使用浏览器执行的操作,是 Web 开发的全新范例,允许运行大量原生…

Java封装:面向对象的三大特性之一

👑专栏内容:Java⛪个人主页:子夜的星的主页💕座右铭:前路未远,步履不停 目录 一、封装的概念二、访问修饰限定符三、包1、包的概念2、导入包中的类3、常见的包 嗨!前面我们简单的认识了一下什么…

vite+vue3.0 + TypeScript+element-plus环境搭建

1、环境要求:node版本16以上 2、搭建vite项目 npm create vitelatest cmd运行下面命令 cd vite-project npm install npm run dev 谷歌浏览器访问http://127.0.0.1:5173/ 查看效果 3、安装element-plus组件 npm运行以下命令进行安装element-plus npm install elem…

汽车屏类产品(二):360全景环视(SVC)、多分割显示、行车记录

前言 随着新能源汽车的快速发展,带动了车载器件的大发展,大的比如域控,小的创新更是不断涌现。而车载显示屏可以说是一大类产品,产品形态也是愈发多样化,比如:仪表cluster、中控IVI、副驾屏、行车记录仪、流媒体后视镜、透明A柱屏、方向盘屏(替代方向盘按键)、门饰板显…

基因组的Phasing原理

1.Phasing的概念 Phasing,或者说Genotype Phasing,它的中文名有很多:基因定相、基因分型、单倍体分型、单倍体构建等在不同的语境下都有人说过。但不管如何,所谓Phasing就是要把一个二倍体(甚至是多倍体)基…

Vue 网络处理 - axios 异步请求的使用,请求响应拦截器(最佳实践)

目录 一、axiox 1.1、axios 简介 1.2、axios 基本使用 1.2.1、下载核心 js 文件. 1.2.2、发送 GET 异步请求 1.2.3、发送 POST 异步请求 1.2.4、发送 GET、POST 请求最佳实践 1.3、请求响应拦截器 1.3.1、拦截器解释 1.3.2、请求拦截器的使用 1.3.3、响应拦截器的使…

配电房智能化改造在加油站等的应用

随着科技的发展和智能化趋势的推进,对加油站配电房进行智能化改造成为了一个必然的选择。智能化改造不仅可以提高加油站的工作效率,减少事故发生率,还可以实现能源的合理利用,提高经济效益。 力安科技加油站智能化改造升级是一种高…

深度学习——卷积神经网络(CNN)基础三

深度学习——卷积神经网络(CNN)基础三 文章目录 前言五、汇聚层(池化层)5.1. 最大池化和平均池化5.2. 填充和步幅5.3. 多个通道5.3. 小结 六、卷积神经网络(LeNet)6.1. LeNet6.2. 模型训练6.3. 小结 总结 前…

Centos7 安装 MySQL5.7 步骤

Centos7 安装 MySQL5.7 步骤 前言:一 .使用yum源方式安装1、卸载系统自带 mariadb查看并卸载系统自带的 Mariadb 2、下载并安装MySQL官方的 Yum2.1 下载mysql的yum源配置2.2 安装mysql的yum源2.3 使用yum方式安装mysql2.3.1 安装过程中报错解决问题描述解决方案 3、…

JTS-通过Coordinate点截断几何Geometry

背景 通过一堆点,线上的点或者靠近线的点,来截取线段,将线段截取成多段 代码片段 /*** 通过点截取线,点可以是线上的形状点也可以是靠近线的点** 线 ------------------------------------------* 点 . . . …

YOLO目标检测——复杂场景人员数据集【含对应voc、coco和yolo三种格式标签】

实际项目应用:安防监控、人群管理、自动驾驶、城市规划、人机交互等等数据集说明:YOLO目标检测数据集,真实场景的高质量图片数据,数据场景丰富。使用lableimg标注软件标注,标注框质量高,含voc(xml)、coco(j…

C++模版初阶讲解

今日为大家分享C的模版,这里先把模版的初阶讲解一下,以后再讲解模版进阶! 前言:模版的引入 在我们进行学习的编程中,常常会有许多函数的功能相同,有些不同点可能就是其中的数据类型不同!如果我…

Jmeter连接Mysql数据库

一.下载mysql数据驱动 https://dev.mysql.com/downloads/connector/j/ 二、在Jmeter测试计划中添加驱动包 三、jmeter添加配置元件:JDBC Connection Configuration 四、Jmeter发送JDBC请求 五、提取mysql查询结果

工业交换机的应用场景

在选择工业交换机的时候,很多人会疑惑自己的场景是否适用工业交换机,工业交换机广泛应用于以下场景,大家可以参考了解 1. 工业自动化:工业交换机用于连接各种工业设备,如PLC(可编程逻辑控制器)、…

【探索C++】三大特性以及类和对象(包括类的特殊函数成员)

(꒪ꇴ꒪ ),Hello我是祐言QAQ我的博客主页:C/C语言,数据结构,Linux基础,ARM开发板,网络编程等领域UP🌍快上🚘,一起学习,让我们成为一个强大的攻城狮&#xff0…