[读书笔记]流畅的python-文本和字节序列

字符和字节

字符

“字符”的最佳定义是unicode字符,从python3的str对象中获取的元素是unicode字符,相当于从py2的unicode对象中获取的元素,而不是从py2的str对象中获取的原始字节序列。

字符的表示和具体的字节表述

  • 字符的表示,即码位,在unicode标准中以4-6个十六进制数字表示。
  • 字符的具体表述取决于所用的编码。如utf-8,utf-16LE

字节

python3中引入了不可变bytes类型和可变bytearray类型。bytes和bytearray对象的各个元素是介于0-255间的整数(1byte)。切片也是同一类型的二进制序列。
字节的字面量表示

  • 可打印的ASCII范围内的字节,使用ASCII字符本身。
  • 制表符、换行符、回车符和 \ 对应的字节,使用转义序列 \t、\n、\r 和 \。
  • 其他字节的值,使用十六进制转义序列(例如,\x00 是空字节)。

byte的构造

  • bytes.fromhex()
  • 一个 str 对象和一个 encoding 关键字参数。
  • 一个可迭代对象,提供 0~255 之间的数值。
  • 一个实现了缓冲协议的对象(如 bytes、bytearray、memoryview、array.array);此时,把源对象中的字节序 列复制到新建的二进制序列中。

基本的编解码器

  • Latin1:一种重要的编码,是其他编码的基础,例如 cp1252 和 Unicode(注意,latin1 与 cp1252 的字节值是一样的,甚至连码位也相同)。
  • cp1252 :Microsoft 制定的 latin1 超集,添加了有用的符号,例如弯引号和€(欧元);有些 Windows 应用把它称为“ANSI”,但它并不是 ANSI 标准。
  • cp437:IBM PC 最初的字符集,包含框图符号。与后来出现的 latin1 不兼容。
  • gb2312:用于编码简体中文的陈旧标准;这是亚洲语言中使用较广泛的多字节编码之一。
  • utf-8: 目前 Web 中最常见的 8 位编码; 与 ASCII 兼容(纯 ASCII 文本是有效的 UTF-8 文 本)。

编码问题

处理UnicodeEncodeError

可以在enocode是指定errors=xxx

>>> city = 'São Paulo' 
>>> city.encode('utf_8'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值