美文网首页Fluent Python
文本与字节序列

文本与字节序列

作者: 一块大番薯 | 来源:发表于2017-12-28 16:48 被阅读25次

字符问题

字符的标识:码位,是数字,如 Unicode 标准下 A 的码位是 U+0041
字符的具体表述取决于编码:如 A(U+0041)在 UTF-8 下编码成 \x41

字节概要

(1)bytes 不可变,bytearray 可变
(2)bytes 与 bytearray 各元素是 range(256) 中的一个
(3)切片返回同类型的二进制序列
(4)二进制序列是整数序列,字节的值有三种表现形式:ASCII (空格到~)、\t \r \n \\、十六进制转义


bytes 和 bytearray
  • bytes 与 bytearray 构造方法
    最后一种构造方法,使用缓冲类对象创建分两种情况:一是使用 array 创建,会始终复制源对象的字节序列,二是使用 memoryview 对象创建,则允许共享内存(类似 PIL 处理图像)。


    构造方法
    码位构造
  • struct 与 memoryview
    struct 用于从二进制序列中提取结构化信息。即把打包的字节序列转换成 tuple ,或者反向转换。
    可作用于bytes、bytearray、memoryview 对象
    例子中,header 是一个 memoryview 对象,使用 struct.unpack 传入一定格式,最终转换成 tuple


    struct 用法

编解码器(codec,encoder、decoder)

  • utf_8 别名:utf-8、utf8、U8
    函数 open()、str.encode()、bytes.decode() 中作为参数 encoding 的值
  • 纯文本不包含空字符 \x00
  • 解决解编码出错一个小技巧:传入参数 errors='replace' 或者 'ignore'
  • 统一字符编码侦测包 chardet


    chardetect
  • BOM(byte-order mark)字节序标记
    b'\xff\xfe' 这就是 BOM,此处使用的是小字节序 CPU
    小字节序:低位在前,高位在后
    这与 utf-16 编码有关,utf-16le 使用小字节序,utf-16be 使用大字节序
    有些编辑器如 notepad 在 utf-8 文件中也加了 BOM,自作聪明。


    BOM

处理文本文件

不能依赖设备默认编码,打开文件是应明确传入 encoding 参数


encoding

默认使用文本模式,即 TextIOWrapper,我的设备默认编码是 cp936
'rb' 表示二进制模式读取文件,返回 BufferedReader 对象


对象

此处省略了非常多很少见的情况。

杂谈
  • 纯文本
    所有字节都表示文本字符 ,如 HTML
    非纯文本 xsl、png 有些字节表示打包的二进制值,如浮点数,rgb值

相关文章

  • 文本与字节序列

    字符问题 字符的标识:码位,是数字,如 Unicode 标准下 A 的码位是 U+0041字符的具体表述取决于编码...

  • fluent python- 第 5 章 一等函数-面向对象(附

    第 4 章 文本和字节序列 人类使用文本, 计算机使用字节序列。 第 5 章 一等函数 前言: 在 Python ...

  • golang之大端序、小端序

    一、概述 字节序:字节在电脑中存放时的序列与输入/输出时的序列;也指的是存放多字节数据的字节(byte)的顺序,典...

  • Markdown基本语法总结

    一、标题 二、列表 无序列表 文本 文本 有序列表 文本 文本 三、链接与图片 插入链接:[显示文本](链接地址)...

  • 2022-07-12

    什么是序列化与反序列化 Java 序列化是指把 Java 对象转换为字节序列的过程。 Java 反序列化是指把字节...

  • 序列化与反序列化

    1.什么是序列化与反序列化: a.序列化就是把Java对象转为字节序列的过程;反序列化是字节序列恢复为Java对象...

  • Java高级特性-序列化与反序列化

    定义序列化: 把对象转换为字节序列的过程。反序列化: 把字节序列恢复为对象的过程。序列化与反序列化 作用1、把对象...

  • Python学习打call第二十六天:序列化与反序列化

    1.什么是序列化与反序列化? 序列化:将内存中的数据转换为字节序列保存到文件; 反序列化:将字节序列的文件中的内容...

  • MarkDown常用标签

    有序列文本 实现方式:数字. 序列1 序列2 无序列文本 实现方法:- 文本 文本1 文本2 连接的使用 【文本】...

  • Java末日第1篇

    问:谈谈你对 Java 序列化与反序列化理解? 答:序列化就是将对象转化为字节流,反序列化就是将字节流转化为对象,...

网友评论

    本文标题:文本与字节序列

    本文链接:https://www.haomeiwen.com/subject/xetugxtx.html