[PY3]——内置数据结构(5)——字符串编码
py2和py3中关于字符串的最大区别?
python2中只有 unicode类型
而python3中有 string bytes两种类型
关于string和bytes的区分?
1.str是文本序列、bytes是字节序列 (文本=字符)
2.字节是没有编码的、文本是有编码的(单字节编码/双字节编码):utf-8 gbk,GB18030等
3.什么是编码?
编码可以说是一种“字节的组织方式”
字符是由字节组成的,而字符的编码规定了它是如何来组织这些字节的,即如何使用字节来表示这些字符
encode( )与decode( )
# encode()用于将str ——> bytes In [1]: '卢'.encode()
Out[1]: b'\xe5\x8d\xa2' In [2]: bin(0xe5)
Out[2]: '0b11100101'
In [3]: bin(0x8d)
Out[3]: '0b10001101'
In [4]: bin(0xa2)
Out[4]: '0b10100010' //所以'卢'在计算机中的表示就是这些二进制 # python3字符串默认使用utf-8编码,encode('')可指定不同编码方式
In [5]: '卢'.encode('GBK')
Out[5]: b'\xc2\xac' # decode()用于将bytes ——> str
In [6]: b'\xe5\x8d\xa2'.decode()
Out[6]: '卢'
bytes类型
# 通过b前缀(b' ')定义bytes # 除了encode外,str的操作都有对应bytes的版本, 但是传入参数也必须是bytes
In [1]: b'abc'.find('b')
TypeError: a bytes-like object is required, not 'str' In [2]: b'abc'.find(b'b')
Out[2]: 1 # 要注意bytes的操作是按照字节来的
In [3]: len('卢'.encode())
In [3]: 3 In [4]: '卢'.encode().find(b'\xe5')
Out[4]: 0 # bytes类型自身的两个操作:decode()、hex()
In [6]: b.decode()
Out[6]: 'abc' In [7]: b.hex() //转化为16进制
Out[7]: ''
bytearray类型
# bytearray是bytes的可变版本
# 使用场景:例如图片处理 # 相对于bytes来说,bytearray多了insert、append、extend、pop、remove、clear、reverse(这些原地修改的方法)
# 并且可以索引操作
# 但insert、append、remove、count的参数必须是int,且范围是0-256 In [11]: b=b'abc';type(b)
Out[11]: bytes In [13]: ba=bytearray(b);type(ba)
Out[13]: bytearray In [15]: b[1]=b'B'
TypeError: 'bytes' object does not support item assignment In [16]: ba[1]=int(b'B'.hex(),16); print(ba)
Out[16]:bytearray(b'aBc')
[PY3]——内置数据结构(5)——字符串编码的更多相关文章
- [PY3]——内置数据结构(3)——字符串及其常用操作
字符串及其常用操作xmind图 字符串的定义 1. 单引号/双引号 In [1]: s1='hello world' In [2]: s1="hello world" 2. 三对单 ...
- [PY3]——内置数据结构(4)——字符串格式化(format)
字符串格式化是拼接字符串的一种手段 join和+拼接字符串的方法,难以控制格式 printf style 字符串格式化 这种方法是从c语言继承过来的 # 待格式化的字符串:一个字符串存在占位符 In ...
- Python内置数据结构之字符串str
1. 数据结构回顾 所有标准序列操作(索引.切片.乘法.成员资格检查.长度.最小值和最大值)都适用于字符串,但是字符串是不可变序列,因此所有的元素赋值和切片赋值都是非法的. >>> ...
- [PY3]——内置数据结构(6)——集合及其常用操作
集合及其常用操作Xmind图 集合的定义 # set( ) # {0,1,2} //注意不能用空的大括号来定义集合 # set(可迭代对象) In [1]: s=set();type ...
- [PY3]——内置数据结构(7)——字典及其常用操作
字典及其常用操作Xmind图 关于字典 字典是一种key-value结构 字典是无序的 字典的定义 # {}大括号可以直接定义一个空字典 In [1]: d={};type(d) Out[1]: di ...
- [PY3]——内置数据结构(9)——线性结构与切片/命名切片slice()
线性结构的总结 列表list 元组tuple 字符串str bytes bytearray的共同点: 都是顺序存储.顺序访问的: 都是可迭代对象: 都可以通过索引访问 线性结构的特征: 可迭代 ...
- [PY3]——内置数据结构(8)——解构与封装
### 解构的理解与用法 ### 解构是python很有特色的一个功能,被很多语言借鉴(例如ES6) # 元素按照顺序赋值给变量 In [31]: lst=list(range(5)) In [32] ...
- [PY3]——内置数据结构(1)——列表及其常用操作
列表及其常用操作_xmind图 about列表 列表是一个序列,用于顺序存储数据 列表分为两种:ArrayList(用数组实现).LinkedList(用链表实现) 定义与初始化 #l ...
- [PY3]——内置数据结构(2)——元组及其常用操作
定义和初始化 #tuple() 使用工厂函数tuple定义一个空元组 #() 使用圆括号定义一个空元组 #(1,2,3) 使用圆括号定义有初始值的元组 #tuple(可迭代对象) 把可迭代对象转换为一 ...
随机推荐
- 执行计划--WHERE条件的先后顺序对执行计划的影响
在编写SQL时,会建议将选择性高(过滤数据多)的条件放到WHERE条件的前面,这是为了让查询优化器优先考虑这些条件,减少生成最优(或相对最优)的执行计划的时间,但最终的执行计划生成过滤顺序还是决定这些 ...
- sql-修改每条数据的某一个字段的值
update B set B.maildata =(select SUBSTRING(maildata,0,3) from basedata where basedata.cid = B.cid)+( ...
- unity 移动物体的方式
1. 简介 在Unity3D中,有多种方式可以改变物体的坐标,实现移动的目的,其本质是每帧修改物体的position. 2. 通过Transform组件移动物体 Transform 组件用于描述物体在 ...
- 当Shell遇上了NodeJS
此文已由作者尧飘海授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 摘要 在企业级系统维护和互联网运维中,Shell脚本的编写与维护常必不可少, 但是Shell脚本的编写与调试 ...
- 水平居中和transform: translateY(-50%) 实现元素垂直居中效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- robot framework学习笔记之二———变量
Robot Framework的变量分为标量, 列表和字典, 分别使用语法格式 ${SCALAR}, @{LIST} 和 &{DICT} 来定义. 此外, 环境变量可以直接使用语法 %{ENV ...
- 服务器变量 $_SERVER 详解
摘抄:http://ha.cker.in/942.seo 1.$_SESSION[‘PHP_SELF’] — 获取当前正在执行脚本的文件名 2.$_SERVER[‘SERVER_PROTOCOL’] ...
- HTTP 缓存机制详解
从这里看的 http://mp.weixin.qq.com/s/8UXEMQBkV9hHwtu9R7mV5w
- javascript高逼格代码实现数组去重,JSON深度拷贝,匿名函数自执行,数字取整等
1.如何装逼用代码骂别人傻逼 (!(~+[])+{})[--[~+""][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+[]]*~+[]] 2.如何优雅的用代 ...
- Java_多线程
线程(Thread) 1.线程是CPU进行资源调度的最小单位 2.线程是进程实际运行的单位,处理进程中无数的小任务 3.线程共享代码和数据空间 4.一个进程可以并发多个线程,线程之间切换系统开销很小 ...