python bytes_Python每天必学之bytes字节
Python中的字节码用b'xxx'的形式表示。x可以用字符表示,也可以用ASCII编码形式\xnn表示,nn从00-ff(十六进制)共256种字符。
一、基本操作
下面列举一下字节的基本操作,可以看出来它和字符串还是非常相近的:
In[40]: b = b"abcd\x64"
In[41]: b
Out[41]: b'abcdd'
In[42]: type(b)
Out[42]: bytes
In[43]: len(b)
Out[43]: 5
In[44]: b[4]
Out[44]: 100 # 100用十六进制表示就是\x64
如果想要修改一个字节串中的某个字节,不能够直接修改,需要将其转化为bytearray后再进行修改:
In[46]: barr = bytearray(b)
In[47]: type(barr)
Out[47]: bytearray
In[48]: barr[0] = 110
In[49]: barr
Out[49]: bytearray(b'nbcdd')
二、字节与字符的关系
上面也提到字节跟字符很相近,其实它们是可以相互转化的。字节通过某种编码形式就可以转化为相应的字符。字节通过encode()方法传入编码方式就可以转化为字符,而字符通过decode()方法就可以转化为字节:
In[50]: s = "人生苦短,我用Python"
In[51]: b = s.encode('utf-8')
In[52]: b
Out[52]: b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python'
In[53]: c = s.encode('gb18030')
In[54]: c
Out[54]: b'\xc8\xcb\xc9\xfa\xbf\xe0\xb6\xcc\xa3\xac\xce\xd2\xd3\xc3Python'
In[55]: b.decode('utf-8')
Out[55]: '人生苦短,我用Python'
In[56]: c.decode('gb18030')
Out[56]: '人生苦短,我用Python'
In[57]: c.decode('utf-8')
Traceback (most recent call last):
exec(code_obj, self.user_global_ns, self.user_ns)
File "", line 1, in
c.decode('utf-8')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc8 in position 0: invalid continuation byte
In[58]: b.decode('gb18030')
Out[58]: '浜虹敓鑻︾煭锛屾垜鐢≒ython'
我们可以看到用不同的编码方式解析出来的字符和字节的方式是完全不同,如果编码和解码用了不同的编码方式,就会产生乱码,甚至转换失败。因为每种编码方式包含的字节种类数目不同,如上例中的\xc8就超出了utf-8的最大字符。
三、应用
举个最简单的例子,我要爬取一个网页的内容,现在来爬取用百度搜索Python时返回的页面,百度用的是utf-8编码格式,如果不对返回结果解码,那它就是一个超级长的字节串。而进行正确解码后就可以显示一个正常的html页面。
import urllib.request
url = "http://www.baidu.com/s?ie=utf-8&wd=python"
page = urllib.request.urlopen(url)
mybytes = page.read()
encoding = "utf-8"
print(mybytes.decode(encoding))
page.close()
以上就是本文的全部内容,希望对大家学习python程序设计有所帮助。
python bytes_Python每天必学之bytes字节相关推荐
- [新手必备]Python 基础入门必学知识点笔记
Python 作为近几年越来越流行的语言,吸引了大量的学员开始学习,为了方便新手小白在学习过程中,更加快捷方便的查漏补缺.根据网上各种乱七八糟的资料以及实验楼的 Python 基础内容整理了一份极度适 ...
- 【视频教程免费领取】聚焦Python分布式爬虫必学框架Scrapy 打造搜索引擎
领取方式 关注公众号,发送Python0407获取下载链接. 扫码关注公众号,公众号回复 Python0407 获取下载地址 目录结构 目录:/读书ReadBook [57.6G] ┣━━48G全套J ...
- python爬取app播放的视频,Python爬虫工程师必学——App数据抓取实战视频教程
爬虫分为几大方向,WEB网页数据抓取.APP数据抓取.软件系统数据抓取.本课程主要为同学讲解如何用python实现App数据抓取,课程从开发环境搭建,App爬虫必备利器详解,项目实战,到最后的多App ...
- Python基础入门必学内容:判断语句与循环语句
一.if语句 关键字:if.elif.else,写法如下: # if if 条件: # (条件可以是任意表达式)# 条件成立,执行此处代码,条件不成立,跳过此处代码,继续往下执行其他diamante# ...
- Python爬虫入门必学知识:Requests的三种参数请求方式
URL参数请求: import requests''' URL Parameters 请求方式: URL参数 例如: 以get 方式请求http://httpbin.org/get?first_nam ...
- python基础知识整理-整理了27个新手必学的Python基础知识点
原标题:整理了27个新手必学的Python基础知识点 1.执行脚本的两种方式 Python a.py 直接调用Python解释器执行文件 chomd +x a.py ./a.py #修改a.py文件的 ...
- python3.8.5怎么用-Python 3.8 新功能大揭秘【新手必学】
最新版本的Python发布了!今年夏天,Python 3.8发布beta版本,在2019年10月14日,第一个正式版本已准备就绪.现在,我们都可以开始使用新功能并从最新改进中受益. Python 3. ...
- python桌面翻译_Python实现桌面翻译工具【新手必学】
Python 用了好长一段时间了,起初是基于对爬虫的兴趣而接触到的.随着不断的深入,慢慢的转了其它语言,毕竟工作机会真的太少了.很多技能长时间不去用,就会出现遗忘,也就有了整理一下,供初学者学习和讨论 ...
- python必备基础代码-新手上路必学的Python函数基础知识,全在这里了(多段代码举例)...
原标题:新手上路必学的Python函数基础知识,全在这里了(多段代码举例) 导读:函数是Python中最重要.最基础的代码组织和代码复用方式.根据经验,如果你需要多次重复相同或类似的代码,就非常值得写 ...
最新文章
- ARM嵌入式编程之STM32的命名方法 STM32F103VET6命名解释
- [洛谷P4012] [网络流24题] 深海机器人问题
- 云原生生态周报 Vol. 2
- 学弟学妹看过来,小白到大神必经之路!
- mysql索引原理及用法
- maven打包所有依赖
- IOCP的Demo及说明
- python 成语库_python实现成语找一找
- window核心编程 22.3 DIPS.exe的踩坑逻辑梳理
- 怎样锁定计算机桌面图标,win10系统锁定桌面图标的详细技巧
- window10官方工具在线升级失败,终极解决方案
- VMware 虚拟机安装 Mac OS X Mountain Lion 苹果系统(vm9.0和Mac OS10.7)
- 注意!!!获取数据库服务器主机ip
- 服务器的虚拟机网速如何分配,管理ESXi主机网络与虚拟机网络
- excel 作图-- 主次纵坐标轴 横坐标名称太长
- 洛谷P5707 【深基2.例12】上学迟到(c++)
- 全国信息化和软件服务业工作座谈会召开
- little alchemy攻略
- 论文阅读方法与技巧【教授经验】
- 用好CRM,它能通过这6种步为企业开源节流
热门文章
- String 源码探究
- [NOIP2011]聪明的质检员
- 坑爹系列:sizeof运算符
- The Windows Phone Emulator wasn't able to create the external network switches 解决方法
- Introduction to Latent Dirichlet Allocation
- [转载] python histogram函数_Python numpy.histogram_bin_edges函数方法的使用
- [转载] Python全栈(1)—— Python如何快速下载库与jupyter notebook 的基本使用
- 带新手玩转MVC——不讲道理就是干(上)
- gdb调试动态链接so
- 【laravel5.4】使用baum\node 类库实现无限极分类