python基础学习(最终篇)

server/2024/11/14 2:55:44/

文章目录

  • JSON的基础使用
    • 一. JSON简介
    • 二. JSON语法规则
    • 三. JSON数据类型
    • 四. JSON对象
    • 五. JSON数组
    • 六. JSON函数
      • 1. json.dumps
      • 2. json.loads
      • 3. json.dump
      • 4. json.load
      • 5. encode
      • 6. decode
      • 7. 参数说明
    • 总结

JSON的基础使用

一. JSON简介

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它是JavaScript的子集,易于人阅读和编写。

JSON用来存储和交换文本信息,比xml更小/更快/更易解析,易于读写,占用带宽小,网络传输速度快的特性,适用于数据量大,不要求保留原有类型的情况。。

前端和后端进行数据交互,其实就是JS和Python进行数据交互!

二. JSON语法规则

  1. 名称必须用双引号(即:" ")来包括
  2. 值可以是双引号包括的字符串、数字、true、false、null、JavaScript数组或子对象
  3. 数据在name/value中
  4. 数据见用逗号分隔
  5. 花括号保存对象
  6. 方括号保存数组

三. JSON数据类型

一并列举出Python与JSON数据类型的映射关系:

PythonJSON
dictobject
list, tuplearray
str, unicodestring
int, long, floatnumber
Truetrue
Falsefalse
Nonenull

四. JSON对象

在花括号中书写,对象可以包含多个名称/值对。
例如:

{"firstname": "jonh", "lastname": "Doe"}

五. JSON数组

Employees是包含三个对象的数组。

每个对象代表一条关于某个人名的记录,在方括号中书写,数组可以包含多个对象:

{"employees": [{ “firstName”:“John” , “lastName”:“Doe” },{ “firstName”:“Anna” , “lastName”:“Smith” },{ “firstName”:“Peter” , “lastName”:“Jones” }]
}

再比如:

[{"name": "情歌","artist": "云汐","url": "https://xingstar520.oss-cn-beijing.aliyuncs.com/%E4%BA%91%E6%B1%90%20-%20%E6%83%85%E6%AD%8C.mp3","cover": "https://xingstar520.oss-cn-beijing.aliyuncs.com/%E6%83%85%E6%AD%8C.png","lrc": "/source/json/云汐-情歌.lrc"},{"name": "青花瓷","artist": "周杰伦","url": "https://npm.elemecdn.com/anzhiyu-music@1.0.4/青花瓷/青花瓷.mp3","cover": "https://y.qq.com/music/photo_new/T002R300x300M000002eFUFm2XYZ7z_2.jpg?max_age=2592000","lrc": "https://npm.elemecdn.com/anzhiyu-music@1.0.4/青花瓷/青花瓷.lrc"}
]

六. JSON函数

使用 JSON 函数需要导入 json 库:import json。

函数描述
json.dumps将 Python 对象编码成 JSON 字符串
json.loads将已编码的 JSON 字符串解码为 Python 对象
json.dump将Python内置类型序列化为json对象后写入文件
json.load读取文件中json形式的字符串元素转化为Python类型
encode将 Python 对象编码成 JSON 字符串
decode将已编码的 JSON 字符串解码为 Python 对象

1. json.dumps

json.dumps 用于将 Python 对象编码成 JSON 字符串。

import jsondata = {'name': 'nanbei', 'age': 18}
# 将Python对象编码成json字符串
print(json.dumps(data))

输出结果为:

{"name": "nanbei", "age": 18}

再如:

import jsondata = json.dumps({'a': 'Runoob', 'b': 7}, sort_keys=True, indent=4, separators=(',', ': '))
print(data)
# separators参数用于指定分隔符 indent参数用于指定缩进字符个数 sort_keys参数用于指定是否按照字典排序输出

输出结果为:

{"a": "Runoob","b": 7
}

2. json.loads

json.loads 用于解码 JSON 数据。该函数返回 Python 字段的数据类型。

import jsondata = {'name': 'nanbei', 'age': 18}
# 将Python对象编码成json字符串
print(json.dumps(data, sort_keys=True, indent=4, separators=(',', ':')))
# 将json字符串解码成Python对象
a = json.dumps(data)
print(json.loads(a))

输出结果为:

{"age":18,"name":"nanbei"
}
{'name': 'nanbei', 'age': 18}

再如:

import jsondata = (1,2,3,4)
data_json = [1,2,3,4]
#将Python对象编码成json字符串
print(json.dumps(data))
print(json.dumps(data_json))#将Python对象编码成json字符串
a = json.dumps(data)
b = json.dumps(data_json)
#将json字符串编码成Python对象
print(json.loads(a))
print(json.loads(b))

输出结果为:

[1, 2, 3, 4]
[1, 2, 3, 4]
[1, 2, 3, 4]
[1, 2, 3, 4]

3. json.dump

将Python内置类型序列化为json对象后写入文件:

import jsondata = {'nanbei':'haha','a':[1,2,3,4],'b':(1,2,3)
}
with open('json_test.txt','w+') as f:json.dump(data,f)

4. json.load

读取文件中json形式的字符串元素转化为Python类型:

import jsondata = {'nanbei':'haha','a':[1,2,3,4],'b':(1,2,3)
}
with open('json_test.txt','w+') as f:json.dump(data,f)with open('json_test.txt','r+') as f:print(json.load(f))

5. encode

Demjson3
demjson3 是 python 的第三方模块库,可用于编码和解码 JSON 数据,包含了 JSONLint 的格式化及校验功能。
安装模块:

pip install demjson3

Python encode() 函数用于将 Python 对象编码成 JSON 字符串。

import demjson3  data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]  json = demjson3.encode(data)  
print(json)

6. decode

Python 可以使用 demjson.decode() 函数解码 JSON 数据。该函数返回 Python 字段的数据类型。

import demjson3  json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';  text = demjson3.decode(json)  
print(text)

7. 参数说明

参数作用
skipkeys如果为True的话,则只能是字典对象,否则会TypeError错误, 默认False
ensure_ascii确定是否为ASCII编码
check_circular循环类型检查,如果为True的话
allow_nan确定是否为允许的值
indent会以美观的方式来打印,呈现,实现缩进
separators对象分隔符,默认为,
encoding编码方式,默认为utf-8
sort_keys如果是字典对象,选择True的话,会按照键的ASCII码来排序

总结

  1. dump:存入的实例对象object(序列化)
  2. dumps:存入的JSON的字符串数据
  3. load:读取的实例对象object(反序列化)
  4. loads:读取的JSON的字符串数据,转化为Python字典对象

❤️❤️❤️Python完结撒花😊❤️❤️❤️

http://www.ppmy.cn/server/108367.html

相关文章

比特币牛市将至背后

作者:Arthur Hayes 编译:Liam 「此处所表达的任何观点均为作者个人意见,不应作为投资决策依据,也不应被视为参与投资交易的推荐或建议。」 我打破常规,前往南半球滑雪两周,为北半球的暑假画上圆满的句号。我…

模拟登录页,华为账号一键登录

一、介绍 基于鸿蒙Next模拟账号一键登录,免去账号注册环节二、场景需求 1. 用户场景 新用户: 需要快速注册并登录,以体验华为的服务。 老用户: 希望快速登录,不用每次输入用户名和密码。 2. 界面设计 Logo和标题&#…

【kubernetes】kubernetes Deployment 详解

Deployment 详解 kubernetes Deployment 详解更新/回滚/缩放/暂停/恢复部署操作 发布策略1、在zs命名空间下创建3个httpd副本并查看结果2、尝试删除其中一个副本并查看结果3、删除所有副本并查看结果4、使用k8s做金丝雀发布测试 kubernetes Deployment 详解 更新/回滚/缩放/暂…

C# opencv识别二维码

新建桌面程序 安装opencvsharp 拖拽设计页面 选择图片识别代码 using OpenCvSharp; using System.Text;namespace QRcodeIdentity {public partial class Form1 : Form{public Form1(){InitializeComponent();}/// <summary>/// 选择图片/// </summary>/// <pa…

物联网安全框架:构建安全互联的未来世界

在数字化浪潮的推动下&#xff0c;物联网&#xff08;IoT&#xff09;技术已经深入我们生活的方方面面&#xff0c;从智能家居到工业自动化&#xff0c;从医疗健康到智能交通&#xff0c;物联网的触角无处不在。然而&#xff0c;随着物联网设备的爆炸式增长&#xff0c;其安全问…

数据结构-符号表

1.概述 符号表最主要的目的就是将一个键和一个值联系起来&#xff0c;符号表能够将存储的数据元素是一个键和一个值共同组成的键值对数据&#xff0c;我们可以根据键来查找对应的值。 符号表中&#xff0c;键具有唯一性,符号表在实际生活中的使用场景是非常广泛的&#xff0c;见…

数据结构——树

文章目录 二叉树和**BST**树与二叉树基本概念常见例子相关术语二叉树 二叉搜索树&#xff08;**BST**&#xff09;二叉树&#xff08;**BST**&#xff09;的算法二叉树&#xff08;**BST**&#xff09;完整实现 二叉树和BST 树与二叉树 基本概念 树是一种非线性结构&#xf…

MONAILabel in 3D Slicer 案例1: 在腹部CT中自动分割脾脏

MONAILabel in 3D Slicer 案例1: 在腹部CT中自动分割脾脏 导读 本系列涵盖从 3D Slicer 医学图像查看器的基础使用到高级自动分割扩展程序的内容&#xff08;从入门到高阶&#xff01;&#xff09;&#xff0c;具体包括软件安装、基础使用教程&#xff0c;自动分割扩展&#x…