python3中字节与字符串
python3中只有一种数据类型可以保存文本信息,就是str(字符串),是不可变序列,保存的是unicode码位。在python3中,用bytes对象来处理字节字符串。
bytes和可变的bytearray与str不同,只能用字节作为序列值,即0~256之间的整数表示。
print(bytes([101,100,99]))
b‘edc‘
list(b‘hello‘)
[104, 101, 108, 108, 111]
list(b‘he llo‘)
[104, 101, 32, 32, 32, 108, 108, 111]#空格的序列值是32
从python3.0开始,所有没有前缀的字符串都是unicode。字节字符串要加前缀b
unicode字符串是不可以用字节表示的文本,而将数据保存到文本或者通过网络发送必须是二进制数据,所以必须将字符串对象编码为字节序列
字符串转字节序列:
1. str.encode(encoding,errors)方法,encoding为编解码器,默认值为‘utf-8‘
‘hello‘.encode() b‘hello‘
bytes(source,encoding,errors)构造函数,创建一个新的字节序列,source为字符串,encoding为编解码器,必须指定encoding,没有默认值
bytes(‘hello‘,encoding=‘utf-8‘)
b‘hello‘
bytes(‘hello‘,‘utf-8‘)
b‘hello‘
将bytes表示的二进制数据转成字符串bytes.decode(encoding,errors)方法,encoding必须与str.encode里的encoding相同
b‘hello‘.decode()
‘hello‘str(source,encoding,error)构造函数与bytes()构造函数相似,source是字节序列,必须指定str函数的参数encoding,它没有默认值
str(b‘hello‘,‘utf-8‘)
‘hello‘
python字符串是不可变的,bytes字节序列也是不可变的,有优点有缺点,优点是由于不变性,字符串可以做字典的键或set的元素,因为一旦初始化字符串的值就不会改变。缺点是当要修改字符串时,都需要创建一个全新的字符串实例。bytearray时bytes可变版本,字节数组可以通过append,pop,insert等方法添加修改删除字节序列
处理字符串拼接
使用+=方法
s=""for sub in subs: s+=sub
使用join方法
s="".join(subs)
字符串的格式化方法str.format或%