Python2和3版本对str和bytes类型的处理
python2中字符串分为2种类型:
字节类型:str,字节类型,通过decode()转化为unicode类型
unicode类型:unicode ,通过encode转化为str字节类型
字节类型 和 unicode类型的转化:
- 字节类型通过decode转化为unciode类型
- unciode类型通过encode方法转化为直接类型
- 方法的使用和python3相同,但是在方法中默认的编码方式为ascii, 对中文需要手动指定为utf-8
python3中字符串分为2种类型:
str:unicode,通过encode() 转化为bytes
bytes:字节类型,通过decode()转化为 str类型
1. str/bytes
Python 3 所有的 strings 均是 unicode 类型。
Python 2 将 strings 处理为原生的 bytes 类型,而不是 unicode。
# python3 中
# python3 中 >>> a = '中文' >>> a
'中文' >>> type(a)
<class 'str'>
# python2中,由于a已经是字节类型,所以只能对其进行解码变为str类型,不能对其进行编码.(根据2.x版本不同,有时候也不能进行解码)
# python2中 >>> a = '中文' >>> a
'\xd6\xd0\xce\xc4' >>> type(a)
<type 'str'> # 相当于 b"中文" 这个写法
>>> b = b"中文" >>> b
'\xd6\xd0\xce\xc4' >>> type(b)
<type 'str'>
2. str 与 bytes 之间的类型转换
str 与 bytes 之间的类型转换如下:
# str 与 bytes 之间的类型转换如下:
str -> bytes: bytes(s, encoding='utf8')
bytes -> str: str(b, encoding='utf-8') # 通过编码解码的形式对二者进行转换
str 编码成 bytes 格式: str.encode(s)
bytes 格式编码成 str 类型: bytes.decode(b)
另附: python str与bytes之间的转换
# bytes object
b = b"example" # str object
s = "example" # str to bytes
bytes(s, encoding = "utf8") # bytes to str
str(b, encoding = "utf-8") # an alternative method
# str to bytes
str.encode(s) # bytes to str
bytes.decode(b)
Python2和3版本对str和bytes类型的处理的更多相关文章
- Python 3中的str和bytes类型
Python3 中的str和bytes类型 Python3最重要的新特性之一是:对字符串和二进制数据流做了明确的区分.文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示.Pyt ...
- Python str 与 bytes 类型(Python2/3 对 str 的处理)
本文均在 Python 3 下测试通过,python 2.x 会略有不同. 1. str/bytes >> s = '123' >> type(s) str >> ...
- python之路day06--python2/3小区别,小数据池的概念,编码的进阶str转为bytes类型,编码和解码
python2#print() print'abc'#range() xrange()生成器#raw_input() python3# print('abc')# range()# input() = ...
- Python str 与 bytes 类型 之间的转换
bytes:字节数组,通常用它可以描述 “一个字符串”,只不过该字符串是 “bytes类型”,所以容易与str类型混淆,他们二者之间的转换: https://blog.csdn.net/lanchu ...
- 关于python2中的unicode和str以及python3中的str和bytes
python3有两种表示字符序列的类型:bytes和str.前者的实例包含原始的8位值:后者的实例包含Unicode字符. python2中也有两种表示字符序列的类型,分别叫做str和unicode. ...
- 三目运算的使用&bytes类型转str类型
一.三目运算的使用 就像c语言中有三目运算符一样,python中也有三目运算符,废话不多说直接上代码 a=3 c=4 b=a if a>c else c print(b) 意思就和 if a&g ...
- python2与python3的区别 ,小数据池 bytes 类型
一.python2和3的区别 在python3中 在python2中 print('ab')方式打印内容()括号是必须要有的. print 'ab' 可以加可以不加. 只有range 有ran ...
- TypeError: write() argument must be str, not bytes报错原因及Python3写入二进制文件方法
Python2随机写入二进制文件: with open('/python2/random.bin','w') as f: f.write(os.urandom(10)) 但使用Python3会报错: ...
- 由time.tzname返回值引发的对str、bytes转换时编码问题实践
Windows 10家庭中文版,Python 3.6.4, 下午复习了一下time模块,熟悉一下其中的各种时间格式的转换:时间戳浮点数.struct_tm.字符串,还算顺利. 可是,测试其中的time ...
随机推荐
- spark2.1源码分析2:从SparkPi分析一个job的执行
从SparkPi的一个行动操作入手,选择Run–Debug SparkPi进入调试: F8:Step Over F7:Step Into 右键Run to Cursor Ctrl+B 查看定义 导航– ...
- 如何在VB.net中建立word文档
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Butt ...
- eclipse修改android项目的apk包名类名
在Google提供的Eclipse集成开发环境adt-bundle下修改名称的总结: 1. 修改工程名(apk名称) 在弹出的对话框中输入新名称 该操作实际上是修改<project&g ...
- redis读书笔记
1.redis两种存储机制(持久化) Redis的存储机制分为:Snapshot和AOF 都先将内存存储在内存中. (1)Snapshot当数据累计到一定的阈值,就会触发dump将数据一次性写入到数据 ...
- Window中的Docker 拉取Mysql镜像 并在本地Navicate链接
首先本地 拉取mysql镜像 以下是所有mysql镜像 我自己下载的为5.6 下面 以5.6为例:(拉取mysql5.6镜像) docker pull mysql:5.6 创建一个容器 doc ...
- Python 爬虫之下载图片
from urllib import request import json #---------获取网页源代码-------------- def getHtml(url): response=re ...
- MPI 集合通信函数 MPI_Reduce(),MPI_Allreduce(),MPI_Bcast(),MPI_Scatter(),MPI_Gather(),MPI_Allgather(),MPI_Scan(),MPI_Reduce_Scatter()
▶ 八个常用的集合通信函数 ▶ 规约函数 MPI_Reduce(),将通信子内各进程的同一个变量参与规约计算,并向指定的进程输出计算结果 ● 函数原型 MPI_METHOD MPI_Reduce( _ ...
- MySQL(基础技能)
一.概述 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access.MS SQL Serve ...
- springmvc 学习
第一章回顾JavaWeb中的MVC设计模式 1)MVC这种设计模式,不光运用于Web领域,而且也能用于非Web领域 2)今天说的MVC特指一种表现层设计模式,不限于Java语言 第二章回顾struts ...
- K2项目开发流程
(自己的学习资料) K2项目开发流程: 1.在VS2013中设计流程,并在K2 Workspce中测试流程 首先是新建新建一个k2的Process文件..kprx后缀. 在里面创建所需要的流程.由于我 ...