详解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 返回汉字的汉语拼音
Feb 27 Python
Python简单调用MySQL存储过程并获得返回值的方法
Jul 20 Python
python如何统计序列中元素
Jul 31 Python
python读文件保存到字典,修改字典并写入新文件的实例
Apr 23 Python
Python实现的读取文件内容并写入其他文件操作示例
Apr 09 Python
Python3.5面向对象与继承图文实例详解
Apr 24 Python
Django 表单模型选择框如何使用分组
May 16 Python
Pycharm最新激活码2019(推荐)
Dec 31 Python
pytorch加载自定义网络权重的实现
Jan 07 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
Mar 08 Python
详解Python中pyautogui库的最全使用方法
Apr 01 Python
在PyCharm中安装PaddlePaddle的方法
Feb 05 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
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
2017/03/16 PHP
thinkPHP5框架自定义验证器实现方法分析
2018/06/11 PHP
php实现的顺序线性表示例
2019/05/04 PHP
一段实现页面上的图片延时加载的js代码
2010/02/11 Javascript
javascript两种function的定义介绍及区别说明
2013/05/02 Javascript
JavaScript事件处理器中的event参数使用介绍
2013/05/24 Javascript
Javascript 实现复制(Copy)动作方法大全
2014/06/20 Javascript
使用nodejs开发cli项目实例
2015/06/03 NodeJs
javascript中window.open在原来的窗口中打开新的窗口(不同名)
2015/11/15 Javascript
5分钟打造简易高效的webpack常用配置
2017/07/04 Javascript
JavaScript截屏功能的实现代码
2017/07/28 Javascript
利用yarn代替npm管理前端项目模块依赖的方法详解
2017/09/04 Javascript
javascript字体颜色控件的开发 JS实现字体控制
2017/11/27 Javascript
js+canvas实现滑动拼图验证码功能
2018/03/26 Javascript
vue脚手架搭建项目的兼容性配置详解
2018/07/17 Javascript
vue 组件的封装之基于axios的ajax请求方法
2018/08/11 Javascript
vue实现虚拟列表功能的代码
2020/07/28 Javascript
swiper实现导航滚动效果
2020/12/13 Javascript
Python读csv文件去掉一列后再写入新的文件实例
2017/12/28 Python
详解Django中类视图使用装饰器的方式
2018/08/12 Python
详解python中的线程与线程池
2019/05/10 Python
python 整数越界问题详解
2019/06/27 Python
python自动化测试之DDT数据驱动的实现代码
2019/07/23 Python
python实现切割url得到域名、协议、主机名等各个字段的例子
2019/07/25 Python
用python wxpy管理微信公众号并利用微信获取自己的开源数据
2019/07/30 Python
pytorch 在网络中添加可训练参数,修改预训练权重文件的方法
2019/08/17 Python
python 字符串常用方法汇总详解
2019/09/16 Python
python 实现表情识别
2020/11/21 Python
体育专业个人的求职信范文
2013/09/21 职场文书
医科学校毕业生自荐信
2013/11/09 职场文书
理工科学生的自我评价
2013/12/15 职场文书
委托证明范本
2014/11/25 职场文书
留学推荐信(中英文版)
2015/03/26 职场文书
戒赌保证书
2015/05/11 职场文书
创业计划书之家教托管
2019/09/25 职场文书
JavaScript中MutationObServer监听DOM元素详情
2021/11/27 Javascript