Python核心编程(第3版)
第3 部分 补充/实验章节

第14章 文本处理

章节主张:文本处理章是在把前面零散能力收束成‘系统边界处理能力’:文件格式、编码、结构和解析方式决定数据能否顺畅流动。

中文释读:CSV、JSON、XML 都不是小知识点,而是不同系统之间交接数据的主干语言。做自动化的人,最终都要成为格式边界的高手。

章节知识路线

  1. 14.1 逗号分隔值(CSV)
  2. 14.2 JSON
  3. 14.3 可扩展标记语言
  4. 14.4 参考文献
  5. 14.5 相关模块

关键论点

  • CSV 适合扁平交换但最怕边界混乱。
  • JSON 适合现代接口和配置交换。
  • XML 则代表结构化层级和模式表达能力。

行动清单

  • 先确定格式契约。
  • 编码、缺失值、字段顺序要显式处理。
  • 对导入导出写最小验证器。

源章节深读

14.1 逗号分隔值(CSV)

解决的问题:这一节解决的是“14.1 逗号分隔值(CSV)在真实应用里到底扮演什么角色”。

554 第 3 部分 补充/实验章节 无论创建什么类型的应用,最终都需要处理人类可读的数据,这类数据一般都是文本。

怎么用:把这节内容转成自己的一个最小脚本、接口实验或系统边界测试,验证它在真实任务中的输入输出。

提醒:最常见的问题是只记住 14.1 逗号分隔值(CSV) 的 API 或步骤,却没搞清它的上下游依赖与边界条件。

原文线索

554 第 3 部分 补充/实验章节 无论创建什么类型的应用,最终都需要处理人类可读的数据,这类数据一般都是文本。 Python 标准库含有 3 个文本处理模块和包,它们可以完成这个任务:csv、json、xml。 在本章末尾,我们将 XML 与第 2 章中介绍的其他客户端—服务器的知识结合起来,展 示如何使用 Python 创建 XML-RPC 服务。

14.2 JSON

解决的问题:这一节解决的是“14.2 JSON在真实应用里到底扮演什么角色”。

第 14 章 文本处理 557 for 循环的大部分都相同,除了无须读取整行后用逗号分隔。

怎么用:把这节内容转成自己的一个最小脚本、接口实验或系统边界测试,验证它在真实任务中的输入输出。

提醒:最常见的问题是只记住 14.2 JSON 的 API 或步骤,却没搞清它的上下游依赖与边界条件。

原文线索

第 14 章 文本处理 557 for 循环的大部分都相同,除了无须读取整行后用逗号分隔。 现在使用 csv 模块解析数据, 让用户用循环变量来指定目标字段的名称。 注意,输出结果虽然相似,但并不是精确匹配。

14.3 可扩展标记语言

解决的问题:这一节解决的是“14.3 可扩展标记语言在真实应用里到底扮演什么角色”。

第 14 章 文本处理 561 Programming"}, "0137143419": {"year": 2009, "title": "Python Fundamentals"}, "0132356139": {"authors": ["Jeff Forcier", "Paul Bissex", "Wesley Chun"], "year": 2009, "title": "Python Web Development with Django"}} *** PRETTY_PRINTED JSON *** { "0132269937": { "edition": 2, "year": 2007, "title": "Core Python Programming" }, "0137143419": { "year": 2009, "title": "Python Fundamentals" }, "0132356139": { "authors": [ "Jeff Forcier", "Paul Bissex", "Wesley Chun" ], "year": 2009, "title": "Python Web Development with Django" } } 这个示例演示了从字典转换为 JSON 的方法。

怎么用:把这节内容转成自己的一个最小脚本、接口实验或系统边界测试,验证它在真实任务中的输入输出。

提醒:最常见的问题是只记住 14.3 可扩展标记语言 的 API 或步骤,却没搞清它的上下游依赖与边界条件。

原文线索

第 14 章 文本处理 561 Programming"}, "0137143419": {"year": 2009, "title": "Python Fundamentals"}, "0132356139": {"authors": ["Jeff Forcier", "Paul Bissex", "Wesley Chun"], "year": 2009, "title": "Python Web Development with Django"}} *** PRETTY_PRINTED JSON *** { "0132269937": { "edition": 2, "year": 2007, "title": "Core Python Programming" }, "0137143419": { "year": 2009, "title": "Python Fundamentals" }, "0132356139": { "authors": [ "Jeff Forcier", "Paul Bissex", "Wesley Chun" ], "year": 2009, "title": "Python Web Development with Django" } } 这个示例演示了从字典转换为 JSON 的方法。 也可以将数据从列表或元组转成 JSON 数组。 json 模块还可以为其他 Python 数据类型提供编码和解码(decoding)类,用于与 JSON 互转。

14.4 参考文献

解决的问题:这一节解决的是“14.4 参考文献在真实应用里到底扮演什么角色”。

第 14 章 文本处理 573 Latest Google stock price: 570.11 (-9.89 / -1.71%) as of 11/23/2011 at 4:00pm Latest foreign exchange rate from USD to EUR: 0.7491 as of 11/24/2011 at 3:51pm Latest foreign exchange rate from EUR to USD: 1.3349 as of 11/24/2011 at 3:51pm Latest Twitter status: @KatEller same to you!!! :-) we need a celebration meal... this coming monday or friday? have a great thanksgiving!! 尽管本章已到末尾,但仅仅接触到 XML-RPC 和 JSON-RPC 编程的皮毛。

怎么用:把这节内容转成自己的一个最小脚本、接口实验或系统边界测试,验证它在真实任务中的输入输出。

提醒:最常见的问题是只记住 14.4 参考文献 的 API 或步骤,却没搞清它的上下游依赖与边界条件。

原文线索

第 14 章 文本处理 573 Latest Google stock price: 570.11 (-9.89 / -1.71%) as of 11/23/2011 at 4:00pm Latest foreign exchange rate from USD to EUR: 0.7491 as of 11/24/2011 at 3:51pm Latest foreign exchange rate from EUR to USD: 1.3349 as of 11/24/2011 at 3:51pm Latest Twitter status: @KatEller same to you!!! :-) we need a celebration meal... this coming monday or friday? have a great thanksgiving!! 尽管本章已到末尾,但仅仅接触到 XML-RPC 和 JSON-RPC 编程的皮毛。 若想了解更多 相关内容,建议通过 DocXMLRPCServer 类来了解自归档的 XML-RPC 服务器,以及从 XML-RPC 服务器能获取的不同类型的数据结构(参见 xmlrpclib/xmlrpc.client 文档)。 14.4 参考文献 网上有许多关于本章内容的文档。

14.5 相关模块

解决的问题:这一节解决的是“14.5 相关模块在真实应用里到底扮演什么角色”。

把 14.5 相关模块 放回本章上下文,它更像是 结构化数据交换与系统边界 的一个具体落点。

怎么用:把这节内容转成自己的一个最小脚本、接口实验或系统边界测试,验证它在真实任务中的输入输出。

提醒:最常见的问题是只记住 14.5 相关模块 的 API 或步骤,却没搞清它的上下游依赖与边界条件。

原文线索

14.6 练习

解决的问题:这一节解决的是“14.6 练习在真实应用里到底扮演什么角色”。

574 第 3 部分 补充/实验章节 对于想进一步了解的读者,建议阅读 Text Processing in Python(Addison-Wesley, 2003) 一书,这是 Python 文本处理方面的经典。

怎么用:把这节内容转成自己的一个最小脚本、接口实验或系统边界测试,验证它在真实任务中的输入输出。

提醒:最常见的问题是只记住 14.6 练习 的 API 或步骤,却没搞清它的上下游依赖与边界条件。

原文线索

574 第 3 部分 补充/实验章节 对于想进一步了解的读者,建议阅读 Text Processing in Python(Addison-Wesley, 2003) 一书,这是 Python 文本处理方面的经典。 还有另一本书,名为 Python 2.6 Text Processing (Packt, 2010)。 不 要管书名中的 2.6,其中介绍的内容可用于大多数当前的 Python 版本中。

辨别题

为什么“只是导个 CSV/JSON/XML”常常变成排错黑洞?

本章图版学习路径

14.1 逗号分隔值(CSV)

结构化交换格式