详解python string类型 bytes类型 bytearray类型


Posted in Python onDecember 16, 2017

 一、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的一个可变序列。

可选的源参数可以用几种不同的方式来初始化数组:

•如果它是一个字符串,那么您还必须给出编码(以及可选的错误)参数;bytearray()然后使用str.encode()将字符串转换为字节。
•如果它是一个整数,那么数组将具有这个大小,并将用null字节初始化。
•如果它是符合缓冲区接口的对象,则将使用对象的只读缓冲区来初始化字节数组。
•如果它是可迭代的,那么它必须是range 0 < = x < 256的整数的迭代,它被用作数组的初始内容
•如果没有参数,则创建一个大小为0的数组。

当源参数是一个字符串时:

>>> 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类型,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Python 相关文章推荐
Python对字符串实现去重操作的方法示例
Aug 11 Python
Python 获得命令行参数的方法(推荐)
Jan 24 Python
一份python入门应该看的学习资料
Apr 11 Python
tensorflow: 查看 tensor详细数值方法
Jun 13 Python
分享Python切分字符串的一个不错方法
Dec 14 Python
基于python的Paxos算法实现
Jul 03 Python
pytorch 图像预处理之减去均值,除以方差的实例
Jan 02 Python
如何使用python切换hosts文件
Apr 29 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
May 16 Python
python一些性能分析的技巧
Aug 30 Python
详解python 支持向量机(SVM)算法
Sep 18 Python
详解Python遍历列表时删除元素的正确做法
Jan 07 Python
python使用os.listdir和os.walk获得文件的路径的方法
Dec 16 #Python
python读取与写入csv格式文件的示例代码
Dec 16 #Python
浅谈用VSCode写python的正确姿势
Dec 16 #Python
numpy中索引和切片详解
Dec 15 #Python
Python实现简单网页图片抓取完整代码实例
Dec 15 #Python
利用numpy实现一、二维数组的拼接简单代码示例
Dec 15 #Python
神经网络python源码分享
Dec 15 #Python
You might like
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
2014/01/22 PHP
php利用header函数下载各种文件
2016/08/24 PHP
PHP经典实用正则表达式小结
2017/05/04 PHP
Yii2框架自定义类统一处理url操作示例
2019/05/25 PHP
javascript forEach通用循环遍历方法
2010/10/11 Javascript
jQuery移动和复制dom节点实用DOM操作案例
2012/12/17 Javascript
jQuery中parents()和parent()的区别分析
2014/10/28 Javascript
jQuery实现视频作为全屏幕背景
2014/12/18 Javascript
jquery中实现时间戳与日期相互转换
2016/04/12 Javascript
如何利用JSHint减少JavaScript的错误
2016/08/23 Javascript
javascript使用闭包模拟对象的私有属性和方法
2016/10/05 Javascript
原生JS实现图片轮播切换效果
2016/12/15 Javascript
canvas学习之API整理笔记(二)
2016/12/29 Javascript
原生js实现简单的链式操作
2017/07/04 Javascript
基于canvas粒子系统的构建详解
2017/08/31 Javascript
jquery自定义显示消息数量
2017/12/19 jQuery
layui 富文本赋值,取值,取纯文本值的实例
2019/09/18 Javascript
Vue实现指令式动态追加小球动画组件的步骤
2020/12/18 Vue.js
[01:03:51]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第三场
2018/04/09 DOTA
探究Python中isalnum()方法的使用
2015/05/18 Python
详解Python的Django框架中Manager方法的使用
2015/07/21 Python
给你选择Python语言实现机器学习算法的三大理由
2017/11/15 Python
Myprotein芬兰官网:欧洲第一运动营养品牌
2019/05/05 全球购物
安全的后院和健身蹦床:JumpSport
2019/07/15 全球购物
满月酒答谢词
2014/01/14 职场文书
户外婚礼策划方案
2014/02/08 职场文书
2014植树节活动总结
2014/03/11 职场文书
秋天的图画教学反思
2014/05/01 职场文书
幼儿园小班工作总结2015
2015/04/25 职场文书
2019大学生社会实践报告汇总
2019/08/16 职场文书
彻底理解golang中什么是nil
2021/04/29 Golang
MySQL 使用自定义变量进行查询优化
2021/05/14 MySQL
详解MySQL数据库千万级数据查询和存储
2021/05/18 MySQL
OpenCV-Python实现轮廓的特征值
2021/06/09 Python
《极主夫道》真人电影正式预告 定档6月3日上映
2022/04/05 日漫
全新239军机修复记
2022/04/05 无线电