详解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 相关文章推荐
一个检测OpenSSL心脏出血漏洞的Python脚本分享
Apr 10 Python
教你用python3根据关键词爬取百度百科的内容
Aug 18 Python
听歌识曲--用python实现一个音乐检索器的功能
Nov 15 Python
pandas的object对象转时间对象的方法
Apr 11 Python
用Pycharm实现鼠标滚轮控制字体大小的方法
Jan 15 Python
Python后台管理员管理前台会员信息的讲解
Jan 28 Python
Windows系统Python直接调用C++ DLL的方法
Aug 01 Python
keras-siamese用自己的数据集实现详解
Jun 10 Python
Python日志器使用方法及原理解析
Sep 27 Python
Python word文本自动化操作实现方法解析
Nov 05 Python
上手简单,功能强大的Python爬虫框架——feapder
Apr 27 Python
pandas中pd.groupby()的用法详解
Jun 16 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
一拳超人中怪人协会钦定! S级别最强四人!
2020/03/02 日漫
收音机术语解释
2021/03/01 无线电
dede3.1分页文字采集过滤规则详说(图文教程)续四
2007/04/03 PHP
使用phpQuery采集网页的方法
2013/11/13 PHP
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例
2014/11/06 PHP
PHP简单实现无限级分类的方法
2016/05/13 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
document.getElementById方法在Firefox与IE中的区别
2010/05/18 Javascript
某页码显示的helper 少量调整,另附js版
2010/09/12 Javascript
Javascript图像处理—亮度对比度应用案例
2013/01/03 Javascript
jquery图片倾斜层叠切换特效代码分享
2015/08/27 Javascript
基于javascript实现简单计算器功能
2016/01/03 Javascript
Bootstrap源码解读下拉菜单(4)
2016/12/23 Javascript
Javascript中字符串相关常用的使用方法总结
2017/03/13 Javascript
NodeJS处理Express中异步错误
2017/03/26 NodeJs
详解vue 单页应用(spa)前端路由实现原理
2018/04/04 Javascript
详解vue中使用protobuf踩坑记
2019/05/07 Javascript
bootstrap实现tab选项卡切换
2020/08/09 Javascript
js实现鼠标拖曳效果
2020/12/30 Javascript
python实现的守护进程(Daemon)用法实例
2015/06/02 Python
浅析python递归函数和河内塔问题
2017/04/18 Python
Python与人工神经网络:使用神经网络识别手写图像介绍
2017/12/19 Python
python爬取基于m3u8协议的ts文件并合并
2019/04/26 Python
Python批量安装卸载1000个apk的方法
2020/04/10 Python
python3+openCV 获取图片中文本区域的最小外接矩形实例
2020/06/02 Python
tensorflow之读取jpg图像长和宽实例
2020/06/18 Python
Python实现哲学家就餐问题实例代码
2020/11/09 Python
HTML5 Canvas渐进填充与透明实现图像的Mask效果
2013/07/11 HTML / CSS
大学生工作求职信
2014/06/23 职场文书
学校教师安全责任书
2014/07/23 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书
领导班子四风对照检查材料
2014/09/23 职场文书
2014年卫生工作总结
2014/11/27 职场文书
2015元旦联欢晚会结束语
2014/12/14 职场文书
保留意见审计报告
2015/06/05 职场文书
Python 如何将integer转化为罗马数(3999以内)
2021/06/05 Python