python爬虫学习笔记 1.3 str和bytes的区别
python爬虫学习笔记 1.1(通用爬虫和聚焦爬虫)
python爬虫学习笔记 1.2 ( HTTP和HTTPS )
python爬虫学习笔记 1.3 str和bytes的区别
python爬虫学习笔记 1.4 (Request简单使用)request安装
python爬虫学习笔记 1.5 (Requests深入)
python爬虫学习笔记 1.6 (HTTP/HTTPS抓包工具-Fiddler)
python爬虫学习笔记 1.7 (urllib模块的基本使用)
python爬虫学习笔记 1.8 (urllib:get请求和post请求)
python爬虫学习笔记 1.9 (Handler处理器 和 自定义Opener)
python爬虫学习笔记 2 (非结构化数据和结构化数据提取)
python爬虫学习笔记 2.1 (正则表达式re模块)
python爬虫学习笔记 2.2 (使用正则表达式得爬虫得简单案例)
python爬虫学习笔记 2.3 (XPath与lxml类库)
python爬虫学习笔记 2.4 (使用Xpath得案例)
python爬虫学习笔记 2.5 (json与JsonPath)
python爬虫学习笔记 2.6 (糗事百科案例)
python爬虫学习笔记 2.7 (多线程爬虫案例(初步了解))
python爬虫学习笔记 2.8 (beautifulsoup4)
python爬虫学习笔记 2.9 (使用bs4得案例)
python爬虫学习笔记 3 (动态HTML处理和机器图像识别)
python爬虫学习笔记 3.1 (动态HTML介绍)
python爬虫学习笔记 3.2 (Selenium与PhantomJS)
python爬虫学习笔记 3.#(番外) (selenium和chromedriver使用中得问题)
bytes
bytes对象只负责以二进制字节序列的形式记录所需记录的对象,至于该对象到底表示什么(比如到底是什么字符)则由相应的编码格式解码所决定
Python2 中
>>> type(b'xxxxx')
<type 'str'>
>>> type('xxxxx')
<type 'str'>
Python3 中
>>> type(b'xxxxx')
<class 'bytes'>
>>> type('xxxxx')
<class 'str'>
bytes是Python 3中特有的,Python 2 里不区分bytes和str。
python3中:
str 使用encode方法转化为 bytes
bytes通过decode转化为str
In [9]: str1='人生苦短,我用Python!'
In [10]: type(str1)
Out[10]: str
In [11]: b=str1.encode()
In [12]: b
Out[12]: b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\
xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!'
In [13]: type(str1.encode())
Out[13]: bytes
bytes转换成str:
In [22]: b
Out[22]: b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\
xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!'
In [23]: type(b)
Out[23]: bytes
In [24]: b.decode()
Out[24]: '人生苦短,我用Python!'
In [25]: type(b.decode())
Out[25]: str
在Python 2中由于不区分str和bytes所以可以直接通过encode()和decode()方法进行编码解码。
而在Python 3中把两者给分开了这个在使用中需要注意。实际应用中在互联网上是通过二进制进行传输,所以就需要将str转换成bytes进行传输,而在接收中通过decode()解码成我们需要的编码进行处理数据这样不管对方是什么编码而本地是我们使用的编码这样就不会乱码。
bytearray
bytearray和bytes不一样的地方在于,bytearray是可变的。
In [26]: str1
Out[26]: '人生苦短,我用Python!'
In [28]: b1=bytearray(str1.encode())
In [29]: b1
Out[29]: bytearray(b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!')
In [30]: b1.decode()
Out[30]: '人生苦短,我用Python!'
In [31]: b1[:6]=bytearray('生命'.encode())
In [32]: b1
Out[32]: bytearray(b'\xe7\x94\x9f\xe5\x91\xbd\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!')
In [33]: b1.decode()
Out[33]: '生命苦短,我用Python!'