python学习笔记4-字符串和字节转换
在python3中最重要的特性是对⽂本和⼆进制数据做了更加清晰的区分,⽂本总是Unicode,由字符类型表⽰,⽽⼆进制数据则由byte类型表⽰,python3不会以任意隐式⽅式混⽤字节型和字符型,也因 此在python3中不能拼接字符串和字节包(python2中可以,会⾃动进⾏转换),也不能在字节包中搜 索字符串,也不能将字符串传⼊参数为字节包的函数。
Bytes 对象是由单个字节作为基本元素(8位,取值范围 0-255)组成的序列,为不可变对象。 bytes对 象只负责以⼆进制字节序列的形式记录所需记录的对象,⾄于该对象到底表⽰什么(⽐如到底是什么 字符)则由相应的编码格式解码所决定。Python3中,bytes通常⽤于⽹络数据传输、⼆进制图⽚和⽂ 件的保存等等。可以通过调⽤bytes()⽣成bytes实例,其值形式为 b'xxxxx',其中 'xxxxx' 为⼀⾄多个 转义的⼗六进制字符串(单个 x 的形式为:\x12,其中\x为⼩写的⼗六进制转义字符,12为⼆位⼗六 进制数)组成的序列,每个⼗六进制数代表⼀个字节(⼋位⼆进制数,取值范围0-255),对于同⼀个 字符串如果采⽤不同的编码⽅式⽣成bytes对象,就会形成不同值。
创建字节
# 创建字节
b1 = b'hello'
b2 = b"ello"
b3 = b'''hello'''
b4 = bytes('中⽂','utf-8')
设置python⽂件编码格式
-*- coding: utf-8 -*-
import sys
sys.setdefaultencoding('utf-8') #修改系统默认编码格式
字符串和字节的转换
#字符串转字节
s1 = "中⽂"
s2 = s1.encode('utf-8')
#str.encode()
print(type(s2))
#<class 'bytes'>print(s2)
#b'\xe4\xb8\xad\xe6\x96\x87'
#字节转字符串
s3 = s2.decode('utf-8')
#bytes.decode()
print(type(s3))
#<class 'str'>
print(s3)
#中⽂