bytes类型用来表示一个字节串。“字节串”是与字符串相呼应。
bytes是Python3.x新增的类型
比较:
- 字符串由若干字符组成,以字符为单位进行操作,字节串由若干字节组成,以字节为单位进行操作
- 字节串和字符串除了操作的的数据单元不同之外,他们支持的所有方法都基本一样
- 字节串与字符串都是不可变序列,不能随意的增加与删除数据
关系:
- 如果字符串的内容都是ASCII码,就可以直接在字符串前添加
b
前缀转换成bytes - bytes是一个类,调用它的构造方法,也就是
bytes()
,可以将字符串按照指定的字符集(如encode=’GBK‘)转换成bytes;如果不指定字符集就默认为UTF-8
如果是ASCII编码
#通过构造函数创建空 bytes
b1 = bytes()
#通过空字符串创建空 bytes
b2 = b''
#通过b前缀将字符串转换成 bytes
b3 = b'http://jzcheng.cn'
print("b3: ", b3) # b3: b'http://jzcheng.cn'
print(b3[2]) # 116 (是 t 对应的ASCII码)
print(b3[2:12]) # b'tp://jzche'
如果不是ASCII码
#使用 bytes()创建字节串并指定字符集
b4 = bytes('我喜欢你',encoding='UTF-8')
print(b4) # b'\xe6\x88\x91\xe5\x96\x9c\xe6\xac\xa2\xe4\xbd\xa0'
#把字符串转成bytes -->encode()
b5 = '我喜欢你'.encode('UTF-8')
print(b5) # b'\xe6\x88\x91\xe5\x96\x9c\xe6\xac\xa2\xe4\xbd\xa0'
- 如果是非ASCII码,输出结果以十六进制输出y原因:非ASCII一般占两个以上的字节,而bytes是按照单个字节来处理数据的
bytes类有一个方法,可以把bytes转换成字符串
# 通过decode()将bytes()转换成字符串
str1 = b5.decode('UTF-8')
print('str1:',str1) # str1: 我喜欢你