详解python string类型 bytes类型 bytearray类型
一、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'xe4xbdxa0xe5xa5xbd' >>> 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'xe4xbdxa0xe5xa5xbd' >>> type(b) <class 'bytes'> >>> new_a = str(b,encoding='utf-8') >>> new_a '你好' >>> type(new_a) <class 'str'> 三、bytearray类型 bytearray类是range 0 < = x < 256的一个可变序列。 可选的源参数可以用几种不同的方式来初始化数组: •如果它是一个字符串,那么您还必须给出编码(以及可选的错误)参数;bytearray()然后使用str.encode()将字符串转换为字节。 当源参数是一个字符串时: >>> b = bytearray(u'你好',encoding='utf-8') >>> b bytearray(b'xe4xbdxa0xe5xa5xbd') >>> type(b) <class 'bytearray'> 当源参数是一个整数时: >>> b = bytearray(5) >>> b bytearray(b'x00x00x00x00x00') >>> type(b) <class 'bytearray'> 当源参数是一个可迭代对象,那么这个迭代对象的元素都必须符合0 <= x < 256: >>> b = bytearray([1,2,3,4,255]) >>> b bytearray(b'x01x02x03x04xff') >>> 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'x96n') >>> b.extend([1,5]) >>> b bytearray(b'x96nx01x03x05') >>> b.pop(2) 1 >>> b bytearray(b'x96nx03x05') >>> b.reverse() >>> b bytearray(b'x05x03nx96') >>> 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类型,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |