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)——字符串编码的更多相关文章

  1. [PY3]——内置数据结构(3)——字符串及其常用操作

    字符串及其常用操作xmind图 字符串的定义 1. 单引号/双引号 In [1]: s1='hello world' In [2]: s1="hello world" 2. 三对单 ...

  2. [PY3]——内置数据结构(4)——字符串格式化(format)

    字符串格式化是拼接字符串的一种手段 join和+拼接字符串的方法,难以控制格式 printf style 字符串格式化 这种方法是从c语言继承过来的 # 待格式化的字符串:一个字符串存在占位符 In ...

  3. Python内置数据结构之字符串str

    1. 数据结构回顾 所有标准序列操作(索引.切片.乘法.成员资格检查.长度.最小值和最大值)都适用于字符串,但是字符串是不可变序列,因此所有的元素赋值和切片赋值都是非法的. >>> ...

  4. [PY3]——内置数据结构(6)——集合及其常用操作

    集合及其常用操作Xmind图          集合的定义 # set( ) # {0,1,2} //注意不能用空的大括号来定义集合 # set(可迭代对象) In [1]: s=set();type ...

  5. [PY3]——内置数据结构(7)——字典及其常用操作

    字典及其常用操作Xmind图 关于字典 字典是一种key-value结构 字典是无序的 字典的定义 # {}大括号可以直接定义一个空字典 In [1]: d={};type(d) Out[1]: di ...

  6. [PY3]——内置数据结构(9)——线性结构与切片/命名切片slice()

    线性结构的总结 列表list  元组tuple  字符串str  bytes  bytearray的共同点: 都是顺序存储.顺序访问的: 都是可迭代对象: 都可以通过索引访问 线性结构的特征: 可迭代 ...

  7. [PY3]——内置数据结构(8)——解构与封装

    ### 解构的理解与用法 ### 解构是python很有特色的一个功能,被很多语言借鉴(例如ES6) # 元素按照顺序赋值给变量 In [31]: lst=list(range(5)) In [32] ...

  8. [PY3]——内置数据结构(1)——列表及其常用操作

    列表及其常用操作_xmind图         about列表 列表是一个序列,用于顺序存储数据 列表分为两种:ArrayList(用数组实现).LinkedList(用链表实现) 定义与初始化 #l ...

  9. [PY3]——内置数据结构(2)——元组及其常用操作

    定义和初始化 #tuple() 使用工厂函数tuple定义一个空元组 #() 使用圆括号定义一个空元组 #(1,2,3) 使用圆括号定义有初始值的元组 #tuple(可迭代对象) 把可迭代对象转换为一 ...

随机推荐

  1. asp.net core部署到iis

    asp.net core项目部署到IIS稍微不同于之前,记录几个要点: 一.下载安装.NET Core 托管捆绑包,下载地址,这个链接或许不是最新的了,官方文档里面有这个链接,到下图所示位置即可找到. ...

  2. maven多模块启动required a bean of type com.xxx.xxx.service that could not be found.

    Description: Field testService in com.xxx.xxx.api.controller.TestController required a bean of type ...

  3. File Path Directory总结

    阅读目录 开始 Path 对路径 字符串进行操作 获得后缀 能合并路径 获取文件名 Directory和DirectoryInfo  对目录进行操作 判断目录是否存在 创建目录 删除目录 获取目录下所 ...

  4. .net core 自制错误日志

    前言 之前.net framework用的ErrorLog帮助类,对于监控错误形成日志,内容非常清晰,想在.net core2.2中继续用,但是有很多不一样的地方,所以想总结一下. 首先需要HttpC ...

  5. Visual Studio 2017 如何 监控当前变量 占用内存空间大小

    在进行VS调试时 大家是否想知道当前变量 占用了内存多少空间呢 这对系统调优还是很有帮助的吧

  6. sql server中的 trimtrailingblanks

    使用sp_help 查出 发现有个这个属性, 如何修改呢? SET ANSI_PADDING ONAlter Table Sys_users_History Alter   column PveSit ...

  7. “全栈2019”22篇Java异常学习资料及总结

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"22篇Ja ...

  8. BZOJ 2388--旅行规划(分块&单调栈&二分)

    2388: 旅行规划 Time Limit: 50 Sec  Memory Limit: 128 MBSubmit: 405  Solved: 118[Submit][Status][Discuss] ...

  9. django_jquery中使用ajax发送post请求变成get请求

    今天在进行js开发的过程中出现了一个奇怪的问题,就是使用ajax向后端发送post请求时,在浏览器network中查看response时,显示400 bad request 并且请求方式变成get,因 ...

  10. 菜鸟浅谈“诈骗”希望“治未病"

    关于目前诈骗.社工数据的套路,说道说道~ 一.前言 这篇文章没有什么高深的技术,只有普普通通的套路,主要也是有I春秋各位表哥与诈骗分子的交手有感而发! 二.正文 因为我们上网的或者其他条件下的人群,没 ...