Python系列(五):bytes和str的区别与联系
Bytes和Str的区别
在Python3中,字符序列有两种类型:bytes
和str
。bytes
类型是无符号的8位值(通常以ASCII码显式),而str
类型是Unicode代码点(code point)。代码点指编码字符集中,字符所对应的数字。
a = b'hello world'
print(isinstance(a, bytes))
print(list(a))
print(a)
"""
True
[104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]
b'hello world'
"""a = 'hello world'
print(isinstance(a, str))
print(list(a))
print(a)
"""
True
['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
hello world
"""
isinstance()
方法可以判断对象的类型,例如这里用来判断是str
还是bytes
。
Python3对文本(str
)和二进制数据(bytes
)有着严格的区分,不能混用。
x = b'python'
y = b'java'
z = 'c++'
w = 'c'print(x + y)
# b'pythonjava'
print(z + w)
# c++c
print(x + z)
# TypeError: can't concat str to bytesprint('python' == b'python')
# False
上述示例中
str
类型和bytes
类型间使用=
来比较是否相等不会报错,但是会返回False。
Bytes与Str间的转换
str
类型和bytes
类型间可以相互转换。
str
到bytes
的转换需要调用encode()
方法。
bytes
到str
间的转换需要调用decode()
方法。
x = b'python'
y = x.decode(encoding='utf-8')
z = y.encode(encoding='utf-8')
print(y)
print(z)
"""
python
b'python'
"""
可以观察到encode()
和decode()
方法都有一个encoding
参数用来指定具体的编码规则。
读写文件的注意事项
当要将bytes
类型写入到文件中时,必须指定mode=wb
。读取二进制文件时可以指定mode=rb
或者指定编码方式,使用后者时读出来的就不是bytes
类型的字符序列了。
x = b'python'# 错误示例
with open('data.bin', mode='w') as fp:fp.write(x)
# TypeError: write() argument must be str, not bytes# 正确示例
with open('data.bin', mode='wb') as fp:fp.write(x)# 读取二进制文件方式1
with open('data.bin', mode='rb') as fp:content = fp.read()print(content)
# python# 读取二进制文件方式2
with open('data.bin', mode='r', encoding='utf-8') as fp:content = fp.read()print(content, type(content))
# python <class 'str'>
当读写Unicode数据时,只需要注意下编码方式即可,最好是显式的传递encoding
参数。
x = '世界你好'with open('data.txt', mode='w', encoding='utf-8') as fp:fp.write(x)with open('data.txt', mode='r', encoding='utf-8') as fp:content = fp.read()print(content)
# 世界你好# 错误示例,编码方式不对
with open('data.txt', mode='r', encoding='gbk') as fp:content = fp.read()print(content)
# 涓栫晫浣犲ソ
Python系列(五):bytes和str的区别与联系相关推荐
- Python高能小技巧:了解bytes与str的区别
导读:Python有两种类型可以表示字符序列:一种是bytes,另一种是str. 作者:布雷特·斯拉特金(Brett Slatkin) 来源:大数据DT(ID:hzdashuju) bytes实例包含 ...
- Python 了解 bytes 与 str 的区别
Python 有两种类型可以表示字符序列 bytes:实例包含的是原始数据,即 8 位的无符号值(通常按照 ASCII 编码标准来显示) str:实例包含的是 Unicode 码点(code poin ...
- [CentOS Python系列] 五.阿里云部署web环境及通过IP地址访问服务器网页
假设我们服务器CentOS系统已经部署好了,现在我们需要向服务器上传一个HTML主页,通过IP地址展示我们的内容,如何实现呢?本篇文章主要介绍讲述部署阿里云服务器web环境,并通过IP地址访问网页的过 ...
- Python中的bytes,str,int等类型转换
在Python3.2中添加了int.from_bytes(bytes, byteorder, *, signed=False) 可实现不固定长度的bytes类型数据转int类型数据 1 >> ...
- python里load什么意思_【python】json中load和loads区别
相同点 dump 和 dumps 都实现了序列化 load 和 loads 都实现反序列化 变量从内存中变成可存储或传输的过程称之为序列化 序列化是将对象状态转化为可保存或可传输格式的过程. 变量内容 ...
- [CentOS Python系列] 六.阿里云搭建Django网站详解
本篇文章主要介绍讲述部署阿里云服务器Django网站环境,并通过IP地址访问网页的过程.写代码过程中往往第一步需要解决的就是配置开发环境,对于新手来说,这是非常头疼的事情,而当配置好之后或者对于老手来 ...
- 浅析Python中bytes和str区别
本博转载自:Chown-Jane-Y的浅析Python3中的bytes和str类型 Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分.文本总是Unicode,由str类型表示, ...
- Python中bytes和str区别详细介绍
Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分.文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示.Python 3不会以任意隐式的方式混用str和b ...
- python3字符编码str_聊聊Python 3 的字符串:str 和 bytes 的区别
Python2的字符串有两种:str 和 unicode,Python3的字符串也有两种:str 和 bytes.Python2 的 str 相当于 Python3 的bytes,而unicode相当 ...
最新文章
- T2821 天使之城 codevs
- Vim 高亮显示单词并查找
- robotframework如何设计web页面的自动化---启动robotframework ride
- Windows Server 2012 R2 虚拟机迁移 出错 21502 0x80070490 解决
- abp+dapper+mysql_ABP公共结构 – 时间与时区设置 - ABP 中文文档
- GDAL库中WFS服务中含有中文不能获取数据的问题
- UML类图几种关系的总结,泛化 = 实现 组合 聚合 关联 依赖
- 用户标签照妖镜api、旺旺搜索搜索标签api、用户标签查询api、淘宝用户标签透视透视api
- dspic c语言教程,轻松学PIC之数码管篇 PIC单片机学习系列教程
- 杰理之如果再开蓝牙一拖二的话。手机连接样机时,会出现,无法连接【篇】
- Thoughts On To The Moon
- 机器人算法工程师入门指南(三)机器人算法工程师需要学习哪些知识?(及教材推荐)
- Node后端模板代码(附源码)
- HTML5设计更具有交互性的标签方法(含智能辅助设备使用的HTML5,翻译资料)
- 05 爬虫应用(2)——抓取昵图性感美女图片(针对传统翻页图片版本)
- 字节跳动一道Python面试题
- 【JavaWeb】一文学会JPA
- 202011 网络是通的,数据发不过去(接受不到)
- python按时间截取视频,python使用opencv按一定间隔截取视频帧
- 快手坐拥3亿用户,想成为平行世界里的Snapchat,然后呢
热门文章
- 解决java编译错误( 程序包javax.servlet不存在javax.servlet.*)
- 2020除了宝塔面板还有哪些好用的服务器管理软件?
- 谷歌的Gson存储的时间转fastjson时报错JSONException: For input string: Jan 1, 1994 12:00:00 AM
- Unreal Engin_画廊制作笔记 _007Fog处理,雾的设置
- 基于阿里云的基础架构设施保障(二)IAAS云存储
- Matplotlib饼图注释
- Python基于YOLOv5的交通标志识别系统[源码&技术文档&部署视频&数据集]
- 超市管理系统用例建模
- 计算机中班音乐,【精品】中班音乐教案6篇
- 大数据助力创建数字化智慧城市解决方案