流畅的 Python - 3. 文本与字节

发布时间:2019-06-09 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了流畅的 Python - 3. 文本与字节脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

对于字符串,我们接触得挺多的。而编码问题,也不时令人头疼的。

由于一开始接触的就是 Python3,所以一些在 python2 上的编码上的坑我没遇到,甚至在 Python3 上都很少遇到编码问题,因为 Python3 默认的编码是 utf-8,而之前又从 Windows 转到了 Arch,编码问题已经很少遇到了。

不过还是要重新认识一下字符与字节。字节可由指定字符串编码得到,是不可变类型。使用下标获取字节的值时,返回的是整数。这个是没想到的。很多适用于 str 对象的方法也适用于 bytes 对象。

struct 模块提供了一些函数可把字节序列与其他不同的类型互相转换。memoryview 用于共享内存,前面刚碰到过。

除了 utf-8 编码,Python 还内置了许多其他的编码器。不同编码器编码的相同的字符,最终的字节大小可能会不同。

对于 UnicodeEncodeError 和 UnicodeDecodeError,是由于对应编码不能处理字符串 / 字节导致的。而 SyntaxError,则是由于没有声明编码,平台编码不能处理对应模块的 .py 文件。

在处理文件文件时,建议是指定编码打开或写入,不然跨操作系统运行脚本可能会出错。

之后,讲到了规范化 Unicode 字符串。之前是一直没想过这样的问题,一些特殊字符,该怎么搜索?这里给出了答案,那就是使用 unicodedata.normalize 函数提供的

Unicode 规范化。它有四个参数:NfcNFDNFKCNFKD

 NFC(Normalization Form C)使用最少的码位构成等价的字符串,而 NFD 把组合字符分解成基字符和单独的组合字符。

在另外两个规范化形式(NFKC 和 NFKD)的首字母缩略词中,字母 K 表示“compatibilITy”(兼容性)。

一般使用 NFC 保存字符串。后两种转换会有格式损失,但在搜索中却很有用。

还有就是大小写折叠,不仅仅是忽略大小写,而且把其他一些符号改变。书上还介绍了一规范化——把变音符号去掉。

对 Unicode 字符的排序,可使用 key 关键字参数获得我们想要的排序结果。之后就是 Unicode 数据库,里面保存了各种关于 Unicode 的消息。

最后是双模 API,同一函数能接受字符串和字节进行操作。

书上很多问题都没怎么遇到,也没想到会这么复杂,不过相信以后会接触到的。慢慢消化吧。

脚本宝典总结

以上是脚本宝典为你收集整理的流畅的 Python - 3. 文本与字节全部内容,希望文章能够帮你解决流畅的 Python - 3. 文本与字节所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。