Day10:字节

1.utf-8编码格式

  • 大家知道unicode的存储效率低,会浪费很多空间,因此在保存文本时,很多时候并不是用unicode编码方式,有很多其他的编码,utf-8,gbk,还有日文,韩文编码等;
  • 而我们写python程序的时候通常都是使用utf-8编码格式来存储编码格式,网页里面同样的也声明utf-8即可;
  • utf-8是中文、英文、日文等全球文字都可以使用的编码格式,通用性很强。

2.了解bytes和bytearray

  • bytes和bytearray是Python3中两个新引入的数据类型;

  • bytes是字节组成,有序的,不可变的序列;

  • bytearray和bytes一样,也是字节组成的,也是有序的,但它是可变的序列;

3.如何定义bytes?

bytes() 
bytes(9) 
bytes('hello', encoding='utf-8') # 返回 b'hello' ,等价于:'hello'.encode()
bytes('中国', encoding='utf-8') # 返回 b'\xe4\xb8\xad\xe5\x9b\xbd' 
  • 字符串转为字节有两种方式:指明编码格式encoding=‘utf-8’,或者是用encode方法;

  • 只有基本的ASCII可以使用字符表示,其他的字符,例如中文,则使用十六进制表示;

  • 例如:‘你好’的字节码为:b’\xe4\xbd\xa0\xe5\xa5\xbd’,每个汉字是3个字节组成;

4.bytes操作

print(b'hello'.startswith(b'h'))  #返回 True

print(bytes.fromhex('abcdef'))    #返回 b'\xab\xcd\xef'

print(b'\xab\xcd\xef'.hex())      #返回 abcdef
  • bytes的方法与str类似,两者都是不可变类型;

  • str输入输出都是str,bytes输入输出都是bytes;

5.bytearray的定义

b = bytearray()

bytearray('hello', encoding='utf-8') 返回 bytearray(b'hello') 

6.bytearray操作

  • 由于bytearray可变,其操作类似于列表,也有增删改查等方法;
  • 使用类似与:b.insert();

7.编码与解码

  • 编码:使用encode方法,返回字节序列bytes;
 str.encode(encoding='utf-8', errors='strict') -> bytes
  • 解码:使用decode方法,返回字符串str;
bytes.decode(encoding="utf-8", errors="strict")-> str
bytearray.decode(encoding="utf-8", errors="strict")-> str 

8.可迭代对象的切片操作

  • 可以通过for循环遍历对象中的元素,就是可迭代对象;

  • 判断一个对象是可迭代对象,首先导入collections模块下的Iterable类型,然后通过isinstance返回boolean值,可迭代返回True,不可迭代返回False;

from collections import Iterable
isinstance('abc', Iterable) 
  • 可迭代对象的切片:类似与数学区间的概念,左边闭区间,右边开区间,且左边一定要小于右边;
print('abcdefg'[1:4]) 返回:bcd
print([1,2,3,4,5][1:3]) 返回 [2, 3] 

# step

print('abcdefg'[1:6:2]) 返回 bdf    #步长为2

本文参考自侠课岛(9xkd.com)Python同学计划

猜你喜欢

转载自blog.csdn.net/ivenqin/article/details/86658960