This commit is contained in:
gsk74521 2025-06-26 07:43:58 +08:00 committed by GitHub
commit e4477e57f1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 11 additions and 2 deletions

View File

@ -1,6 +1,6 @@
## 对象的序列化和反序列化
###JSON概述
### JSON概述
通过上面的讲解我们已经知道如何将文本数据和二进制数据保存到文件中那么这里还有一个问题如果希望把一个列表或者一个字典中的数据保存到文件中又该怎么做呢在Python中我们可以将程序中的数据以JSON格式进行保存。JSON是“JavaScript Object Notation”的缩写它本来是JavaScript语言中创建对象的一种字面量语法现在已经被广泛的应用于跨语言跨平台的数据交换。使用JSON的原因非常简单因为它结构紧凑而且是纯文本任何操作系统和编程语言都能处理纯文本这就是**实现跨语言跨平台数据交换**的前提条件。目前JSON基本上已经取代了XML可扩展标记语言作为**异构系统间交换数据的事实标准**。可以在[JSON的官方网站](https://www.json.org/json-zh.html)找到更多关于JSON的知识这个网站还提供了每种语言处理JSON数据格式可以使用的工具或三方库。
@ -117,6 +117,13 @@ with open('data.json', 'w') as file:
- `load` - 将文件中的JSON数据反序列化成对象
- `loads` - 将字符串的内容反序列化成Python对象
| 方法名 | 输入类型 | 输出目标 | 用途说明 | 示例 |
| :------------------- | :--------------------------- | ----------- | -------------------------------- | --------------------------------------- |
| json.dump(obj, file) | Python 对象(如 dict、list | 文件对象 | 将 Python 数据写入 JSON 文件 | json.dump(data, open('data.json', 'w')) |
| json.dumps(obj) | Python 对象 | 字符串 | 将 Python 数据转为 JSON 字符串 | json_str = json.dumps(data) |
| json.load(file) | 文件对象 | Python 对象 | 从 JSON 文件中读取并解析数据 | data = json.load(open('data.json')) |
| json.loads(json_str) | JSON 字符串 | Python 对象 | 将 JSON 字符串解析为 Python 数据 | data = json.loads(json_str) |
这里出现了两个概念,一个叫序列化,一个叫反序列化,[维基百科](https://zh.wikipedia.org/)上的解释是“序列化serialization在计算机科学的数据处理中是指将数据结构或对象状态转换为可以存储或传输的形式这样在需要的时候能够恢复到原先的状态而且通过序列化的数据重新获取字节时可以利用这些字节来产生原始对象的副本拷贝。与这个过程相反的动作即从一系列字节中提取数据结构的操作就是反序列化deserialization”。
我们可以通过下面的代码,读取上面创建的`data.json`文件将JSON格式的数据还原成Python中的字典。

View File

@ -145,12 +145,14 @@ props = (
)
# 通过循环对四个方向的边框样式及颜色进行设定
for position, color in props:
# 使用setattr内置函数动态给对象指定的属性赋值
# 使用setattr内置函数动态给对象指定的属性赋值 0-无边框、1-实线 2-虚线、3-点线、4-细双线、5-中粗线、6-双线、7-粗线
setattr(borders, position, xlwt.Borders.DASHED)
setattr(borders, color, 5)
header_style.borders = borders
```
> **注意**:在某些版本(如 xlwt 1.3.0+实线边框是通过整数常量来表示的而不是使用类似DASHED的属性名例如setattr(borders, position, 1)
如果要调整单元格的宽度(列宽)和表头的高度(行高),可以按照下面的代码进行操作。
```python