Python学习 Python,这 22 个包怎能不掌握?( 三 )


IDNA 的核心是两个函数:ToASCII 和 ToUnicode 。 ToASCCI 会将国际化的 Unicode 域名转换成 ASCII 字符串 , 而 ToUnicode 会做相反的处理 。 在 IDNA 包中 , 这两个函数叫做 idna.encode 和 idna.decode , 参见下面的例子:
import idnaidna.encode('ドメイン.テスト')# b'xn--eckwd4c7c.xn--zckzah'print(idna.decode('xn--eckwd4c7c.xn--zckzah'))# ドメイン.テスト 该编码的详细内容可以参见 RFC3490 。
10. PyYAML
5.25亿次下载
YAML 是一种数据序列化格式 。 它的设计目标是同时方便人类和机器阅读——人类很容易读懂 , 计算机解析也不难 。
Python学习 Python,这 22 个包怎能不掌握?
本文插图
PyYAML 是 Python 的 YAM 解析器和编码器 , 也就是说它可以读写 YAML 格式 。 它可以将任何 Python 对象编码为 YAML:列表 , 字典 , 甚至类实例都可以 。
Python 提供了自己的配置管理器 , 但 YAML 提供的功能远胜于 Python 自带的 ConfigParser(只能使用最基本的.ini文件) 。
例如 , YAML 能存储任何数据类型:boolean , list , float等 。 ConfigParse 的内部一切都保存为字符串 。 如果你要用 ConfigParser 来加载证书 , 就需要指明你需要的是整数:
config.getint(“section”, “my_int”) 而 pyyaml 能够自动识别类型 , 因此只需这样就能获得 int:
config[“section”][“my_int”] YAML 还允许任意深度的嵌套 , 尽管并非每个项目都需要 , 但非常方便 。
你可以自行决定使用哪一个 , 但许多项目都使用 YAML 作为配置文件 , 因此该项目的流行度非常高 。
11. pyasn1
5.12亿次下载
像 IDNA 一样 , 这个项目的描述的信息量也非常大:
ASN.1 类型和 DER/BER/CER 编码(X.208)的纯 Python 实现 。
幸运的是 , 我们依然能找到这个几十年之久的标准的许多资料 。 ASN.1 是 Abstract Syntax Notation One(抽象语法记法一)的缩写 , 是数据序列化的鼻祖 。 它来自于通讯行业 。 也许你知道 protocol buffer 或者 Apache Thrift 吧?ASN.1正是它们的1984年版本 。
ASN.1 描述了一种不同系统之间的跨平台的接口 , 可以通过该接口发送数据结构 。
还记得第8名的 certifi 吗?ASN.1 用于定义 HTTPS 协议以及许多其他加密系统中使用的证书的格式 。 ASN.1 还广泛用于 SNMP、LDAP、Kerberos、UMTS、LTE 和 VOIP 等协议中 。
它是个非常复杂的标准 , 人们已经发现某些实现充满了脆弱性 。 你可以看看 Reddit 上的这个关于 ASN.1 的讨论(https://www.reddit.com/r/programming/comments/1hf7ds/useful_old_technologies_asn1/) 。
除非真正必要 , 否则我建议不要使用它 。 但由于许多地方都在使用该协议 , 因此许多包都依赖于它 。
12. docutils
5.08亿次下载
Docutils 是一个模块化系统 , 用于将纯文本文档转换成其他格式 , 如 HTML、XML 和 LaTeX等 。 docutils 可以读取 reStructuredText 格式(一种类似于 MarkDown 的容易阅读的格式)的纯文本文档 。
我猜你一定听说过 PEP 文档 , 甚至可能阅读过 。 PEP 文档是什么?
PEP 的意思是 Python Enhanced Proposal(Python增强提案) 。 PEP 是一篇设计文档 , 用于给 Pytho n社区提供信息 , 或者为 Python(或其处理器、环境)描述一个新特性 。 PEP 应该提供特性的精确的技术标准 , 并给出该特性的理由 。
PEP 文档就是使用固定的 reStructuredText 模板 , 然后通过 docutils 转换成漂亮的文档 。
Sphinx 的核心也使用了 docutils 。 Sphinx 用于创建文档项目 。 如果说 docutils 是一台机器 , 那么 Sphinx 就是一个工厂 。 它的最初设计目的是构建P ython 本身的文档 , 但许多其他项目也利用 Sphinx 来创建文档 。


推荐阅读