diff --git "a/Day21-30/22.\345\257\271\350\261\241\347\232\204\345\272\217\345\210\227\345\214\226\345\222\214\345\217\215\345\272\217\345\210\227\345\214\226.md" "b/Day21-30/22.\345\257\271\350\261\241\347\232\204\345\272\217\345\210\227\345\214\226\345\222\214\345\217\215\345\272\217\345\210\227\345\214\226.md" index 39658ec7b..becab5460 100755 --- "a/Day21-30/22.\345\257\271\350\261\241\347\232\204\345\272\217\345\210\227\345\214\226\345\222\214\345\217\215\345\272\217\345\210\227\345\214\226.md" +++ "b/Day21-30/22.\345\257\271\350\261\241\347\232\204\345\272\217\345\210\227\345\214\226\345\222\214\345\217\215\345\272\217\345\210\227\345\214\226.md" @@ -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中的字典。 diff --git "a/Day21-30/24.Python\350\257\273\345\206\231Excel\346\226\207\344\273\266-1.md" "b/Day21-30/24.Python\350\257\273\345\206\231Excel\346\226\207\344\273\266-1.md" index 6ddbc4199..02d903c36 100755 --- "a/Day21-30/24.Python\350\257\273\345\206\231Excel\346\226\207\344\273\266-1.md" +++ "b/Day21-30/24.Python\350\257\273\345\206\231Excel\346\226\207\344\273\266-1.md" @@ -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