一、python3对文本和二进制数据做了区分。文本是Unicode编码,str类型,用于显示。二进制类型是bytes类型,用于存储和传输。bytes是byte的序列,而str是unicode的序列。
str类型:
> s = u'你好' > s '你好' > type(s) <class 'str'>
bytes类型:
> b = b'abc' > b b'abc' > type(b) <class 'bytes'>
二、str和bytes之间的转换关系:str-->encode()-->bytes-->decode()-->str
转换方式一:encode(),decode()
> a = u'你好' > b = a.encode('utf-8') > b b'\xe4\xbd\xa0\xe5\xa5\xbd' > type(b) <class 'bytes'> > new_a = b.decode('utf-8') > new_a '你好' > type(new_a) <class 'str'>
转换方式二:bytes(),str()
> a = u'你好' > b= bytes(a, encoding='utf-8') > b b'\xe4\xbd\xa0\xe5\xa5\xbd' > type(b) <class 'bytes'> > new_a = str(b, encoding='utf-8') > new_a '你好' > type(new_a) <class 'str'>
三、bytearray类型
bytearray类是range 0 < = x < 256的一个可变序列。
可选的源参数可以用几种不同的方式来初始化数组:
"htmlcode">
> b = bytearray(u'你好', encoding='utf-8') > b bytearray(b'\xe4\xbd\xa0\xe5\xa5\xbd') > type(b) <class 'bytearray'>
当源参数是一个整数时:
> b = bytearray(5) > b bytearray(b'\x00\x00\x00\x00\x00') > type(b) <class 'bytearray'>
当源参数是一个可迭代对象,那么这个迭代对象的元素都必须符合0 <= x < 256:
> b = bytearray([1, 2, 3, 4, 255]) > b bytearray(b'\x01\x02\x03\x04\xff') > type(b) <class 'bytearray'
四、bytes和bytearray区别
bytes是不可变的,同str。bytearray是可变的,同list。
> b = bytearray() > b bytearray(b'') > b.append(10) > b bytearray(b'\n') > b.append(100) > b bytearray(b'\nd') > b.remove(100) > b bytearray(b'\n') > b.insert(0, 150) > b bytearray(b'\x96\n') > b.extend([1, 3, 5]) > b bytearray(b'\x96\n\x01\x03\x05') > b.pop(2) 1 > b bytearray(b'\x96\n\x03\x05') > b.reverse() > b bytearray(b'\x05\x03\n\x96') > b.clear() > b bytearray(b'')
五、bytes和 bytearray转换
> b = b'abcdef' > bay = bytearray(b) > bay bytearray(b'abcdef') > b = bytes(bay) > b b'abcdef'
六、bytearray和str转换
> a = 'abcdef' > b = bytearray(a, encoding='utf-8') > b bytearray(b'abcdef') > a = b.decode(encoding='utf-8') > a 'abcdef'
总结
以上所述是小编给大家介绍的详解python string类型 bytes类型 bytearray类型,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!