详解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连接池实现示例程序
Nov 26 Python
vc6编写python扩展的方法分享
Jan 17 Python
Python开发如何在ubuntu 15.10 上配置vim
Jan 25 Python
python之从文件读取数据到list的实例讲解
Apr 19 Python
python中验证码连通域分割的方法详解
Jun 04 Python
深入浅析Python2.x和3.x版本的主要区别
Nov 30 Python
django框架模型层功能、组成与用法分析
Jul 30 Python
基于python 凸包问题的解决
Apr 16 Python
Python urllib.request对象案例解析
May 11 Python
学会python自动收发邮件 代替你问候女友
May 20 Python
解决导入django_filters不成功问题No module named 'django_filter'
Jul 15 Python
Python实现简单的猜单词小游戏
Oct 28 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 存储文本换行实现方法
2010/01/05 PHP
php设计模式 Delegation(委托模式)
2011/06/26 PHP
php版淘宝网查询商品接口代码示例
2014/06/17 PHP
ThinkPHP模板替换与系统常量及应用实例教程
2014/08/22 PHP
PHP时间类完整实例(非常实用)
2015/12/25 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
Javascript入门学习资料收集整理篇
2008/07/06 Javascript
麻雀虽小五脏俱全 Dojo自定义控件应用
2010/09/04 Javascript
Jquery ajaxsubmit上传图片实现代码
2010/11/04 Javascript
基于jQuery实现的图片切换焦点图整理
2014/12/07 Javascript
纯js模拟div层弹性运动的方法
2015/07/27 Javascript
详解JavaScript UTC时间转换方法
2016/01/07 Javascript
使用Bootstrap框架制作查询页面的界面实例代码
2016/05/27 Javascript
js实现简单的获取验证码按钮效果
2017/03/03 Javascript
jquery根据name取得select选中的值实例(超简单)
2018/01/25 jQuery
jQuery中的for循环var与let的区别
2018/04/21 jQuery
微信小程序bindtap事件与冒泡阻止详解
2019/08/08 Javascript
jquery分页优化操作实例分析
2019/08/23 jQuery
微信小程序实现吸顶效果
2020/01/08 Javascript
Python中实现两个字典(dict)合并的方法
2014/09/23 Python
python实现基于两张图片生成圆角图标效果的方法
2015/03/26 Python
Python网络编程之TCP套接字简单用法示例
2018/04/09 Python
celery4+django2定时任务的实现代码
2018/12/23 Python
Django框架创建mysql连接与使用示例
2019/07/29 Python
Python 使用 docopt 解析json参数文件过程讲解
2019/08/13 Python
django项目用higcharts统计最近七天文章点击量
2019/08/17 Python
Python操作MongoDb数据库流程详解
2020/03/05 Python
python matplotlib库的基本使用
2020/09/23 Python
pycharm 复制代码出现空格的解决方式
2021/01/15 Python
一款纯css3实现的颜色渐变按钮的代码教程
2014/11/12 HTML / CSS
ECOSUSI官网:女式皮革背包
2019/09/27 全球购物
美国伴娘礼服商店:Evening Collective
2019/10/07 全球购物
美国一站式电动和手动工具商店:International Tool
2020/11/26 全球购物
MYSQL相比于其他数据库有哪些特点
2013/07/19 面试题
美术教师岗位职责
2014/03/18 职场文书
医院安全生产月活动总结
2014/07/05 职场文书