详解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中文问题解决方法(总结了多位前人经验,初学者必看)
Mar 13 Python
Python函数中*args和**kwargs来传递变长参数的用法
Jan 26 Python
简介Python设计模式中的代理模式与模板方法模式编程
Feb 02 Python
Python使用logging结合decorator模式实现优化日志输出的方法
Apr 16 Python
Python并发编程协程(Coroutine)之Gevent详解
Dec 27 Python
python 把文件中的每一行以数组的元素放入数组中的方法
Apr 29 Python
使用matplotlib画散点图的方法
May 25 Python
python 实现提取某个索引中某个时间段的数据方法
Feb 01 Python
如何在Cloud Studio上执行Python代码?
Aug 09 Python
python实现加密的方式总结
Jan 19 Python
Keras搭建自编码器操作
Jul 03 Python
Python爬虫Scrapy框架CrawlSpider原理及使用案例
Nov 20 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
iis下php mail函数的sendmail配置方法(官方推荐)
2012/04/25 PHP
php递归使用示例(php递归函数)
2014/02/14 PHP
PHP中session跨子域的三种实现方法
2016/07/25 PHP
Laravel5.4框架使用socialite实现github登录的方法
2019/03/20 PHP
鼠标图片振动代码
2006/07/06 Javascript
网页右侧悬浮滚动在线qq客服代码示例
2014/04/28 Javascript
举例讲解Node.js中的Writable对象
2015/07/29 Javascript
jQuery实现自动切换播放的经典滑动门效果
2015/09/12 Javascript
JS DOMReady事件的六种实现方法总结
2016/11/23 Javascript
BootStrap 图标icon符号图标glyphicons不正常显示的快速解决办法
2016/12/08 Javascript
js仿小米手机上下滑动效果
2017/02/05 Javascript
Bootstrap进度条实现代码解析
2017/03/07 Javascript
从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例
2017/04/13 Javascript
js实现水平滚动菜单导航
2017/07/21 Javascript
Bootstrap + AngularJS 实现简单的数据过滤字符查找功能
2017/07/27 Javascript
jQuery实现的点击标题文字切换字体效果示例【测试可用】
2018/04/26 jQuery
微信小程序上线发布流程图文详解
2019/05/06 Javascript
Layui Table js 模拟选中checkbox的例子
2019/09/03 Javascript
利用pyinstaller或virtualenv将python程序打包详解
2017/03/22 Python
基于使用paramiko执行远程linux主机命令(详解)
2017/10/16 Python
利用Python进行异常值分析实例代码
2017/12/07 Python
关于django 数据库迁移(migrate)应该知道的一些事
2018/05/27 Python
python爬虫 urllib模块url编码处理详解
2019/08/20 Python
Python如何使用Gitlab API实现批量的合并分支
2019/11/27 Python
JackJones官方旗舰店:杰克琼斯男装
2018/03/27 全球购物
印度首个本地在线平台:nearbuy
2019/03/28 全球购物
奥地利度假券的专家:we-are.travel
2019/04/10 全球购物
外包公司软件测试工程师
2014/11/01 面试题
大二自我鉴定范文
2013/10/05 职场文书
新法人代表任命书
2014/06/06 职场文书
建设工程授权委托书
2014/09/22 职场文书
教师党员自我评议不足范文
2014/10/19 职场文书
2014年外贸业务员工作总结
2014/12/11 职场文书
学雷锋献爱心倡议书
2015/04/27 职场文书
html form表单基础入门案例讲解
2021/07/15 HTML / CSS
gtx1650怎么样 gtx1650显卡相当于什么级别
2022/04/08 数码科技