![Python 3 爬虫、数据清洗与可视化实战(第2版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/935/32517935/b_32517935.jpg)
1.3 Python数据类型
在Python中有6大数据类型:number(数字)、string(字符串)、list(列表)、tuple(元组)、set(集合)、dictionary(字典)。
1.3.1 数字
1.数字类型
Python 3支持4种类型的数字:int(整数类型)、float(浮点类型)、bool(布尔类型)、complex(复数类型)。在Python3中可以使用type()函数来查看数字类型,如下所示。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_24.jpg?sign=1739316224-pcJK9vOTxmkAVPn9L909UCfeRqc0OhyV-0-efc7bdbae011b0ff6c823b3a3e894e9f)
2.运算类型
Python 3所支持的运算类型包括加法、减法、除法、整除、取余、乘法和乘方。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_25.jpg?sign=1739316224-FQwimrivrUUHzS0Ak70eDUrgZZl8zG4K-0-42be1247fd279fdcb3d2cd1f5a084a25)
1.3.2 字符串
1.字符串类型
字符串就是在单引号、双引号和三引号之间的文字。单引号字符串示例:print('welcome to hangzhou'),其中所有的空格和制表符都照原样保留。单引号与双引号的作用其实是一样的,但是当引号里包含单引号时,则该引号需使用双引号,例如print("what's your name?")。三引号可以指示一个多行的字符串,也可以在三引号中自由使用单引号和双引号,如下所示。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_26.jpg?sign=1739316224-qtrcUSw8lp43MupLtdmS0LFn96Y0PODy-0-463fe6c8e9a6d32d9735fdf258c0f250)
2.字符串的表示方式
如果要在单引号字符串中使用单引号本身,在双引号字符串中使用双引号本身,则需要借助转义符(\),如下所示。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_27.jpg?sign=1739316224-APQ73cHfjMf4pl0wOFPYNPSIodJ9DzqU-0-593cb2ca0a06a1fd2c0fec4985ed558b)
输出结果如下。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_28.jpg?sign=1739316224-JafqQ9s7zhTbxt4rYaBephhiSjy9dNz0-0-38922fb432cce970613e8de8d36dc0f7)
注意:在一个字符串中,行末单独的反斜杠表示下一行继续,而不是开始写新的一行(详见1.2.2节)。另外,可以使用双反斜杠(\\)来表示反斜杠本身,而\n表示换行符。
如果想要指示某些不需要使用转义符进行特别处理的字符串,那么需要指定一个原始字符串。原始字符串通过给字符串加上前缀r或R的方式指定,比如需要原样输出\n而不是令其换行,则代码如下。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_29.jpg?sign=1739316224-SaHW7D2GbuK4ibrzEF68LBCchbQBTIxc-0-3175dd672fed6991b2b158e6a73700cf)
输出结果如下。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_30.jpg?sign=1739316224-LxK4P29QCDkEEvBriAfko06GLZw3Q05X-0-9ff7c3863f6e9c30a571e76c1ec98328)
3.字符串的截取
字符串的截取格式如下所示。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_31.jpg?sign=1739316224-9LAPIzq0tiaLK5NkkRgNsgGagIEv2PmI-0-b99d7d6fdc88f8a582a4c15b9ba9e6a1)
此处解释一下为什么加1:字符串的截取从start_index开始,到end_index结束,也就是大家常理解的左闭右开,如下所示。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_32.jpg?sign=1739316224-XAISmcMU1SEpRHdXWAMo2GbgggvEo4pP-0-190aaf6fe0c390fa5befb696b61f4545)
4.字符串运算
尝试下面的代码:
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_33.jpg?sign=1739316224-xmMT45OtFSEflslDGxJ5R7anIvR9KIhv-0-ae7556ab8481b3549847e20b800b13c7)
此时,运行程序会报错,错误提示如下所示,为什么呢?
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_34.jpg?sign=1739316224-92LeFUEUwkLuGwiIrAtG6gwYeTKF1b2D-0-6eb38dbe7507c98ca9db4e7311ef784e)
字符串(string)只是Python中的一种数据类型,下面的语句在赋值的时候右侧用了单引号,数据类型是字符串。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_35.jpg?sign=1739316224-PssOSBVpq4HzAQRV7vbkzwqBGHmbm6kB-0-1c30a1d01f3d93431098627a62eb5d62)
下面语句的数据类型为整型(int)。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_36.jpg?sign=1739316224-mYcY2OOchfzMXsgiZT7ierXgHVcvnOhK-0-ff10ed2715b69a4505bb75c573aa0346)
不同的数据类型之间是不能进行运算的,但是,不同数据类型可以相互转换,以上代码进行修改后就可以正常运行,修改后的代码如下。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_37.jpg?sign=1739316224-XLwVrx62MV8JIEU6sJqlki1fDB1hJG04-0-5bd5aafa22855456e587201fa87c2410)
注意:“+”号用在字符串中间是连接符,用在数值中间是运算符;int()将括号中的数值或文本转换成整型数据类型。
运行代码后,即时窗口中打印的结果是2,如图1-15所示。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_38.jpg?sign=1739316224-r04iRuZcyG2WG18RRd9IhWLoi4gFzE3o-0-26879b79e9b8a5dd278f7e7e89797b77)
图1-15
四则基础运算如下。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_39.jpg?sign=1739316224-pCOoHo1P2RvCndSbHw6GG475iQVh4Ry8-0-5a2bea9856b85527035874d4df97dd61)
因为相加的双方是数值型数据,所以此时“+”号是运算符,运行结果如下。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_40.jpg?sign=1739316224-cZeZj7c2tR0hFx3pRj7Dda7sqWalOB0c-0-9c86df6411da23f94f70d79573181539)
当相加的双方是字符型数据时,“+”号是连接符。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_41.jpg?sign=1739316224-0B1hQEW3bxd2fc44RYMYO43ccFF3Q9r0-0-1a01d2d274d5ffd7361db724f3dc4970)
运行结果如下。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_42.jpg?sign=1739316224-qr7UEGnsC4U2MnkvnWZ0NbBzVPIWmH4p-0-2ee5ca9537c05e22d92ab865d0bc3bca)
1.3.3 列表
1.列表格式
Python列表是任意对象的有序集合,写在中括号([])里,元素之间用逗号隔开。这里的“任意对象”,既可以是列表,也可以是字符串,如下所示。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_43.jpg?sign=1739316224-DvlLsfDz2mYy50MNY9iz2sI427KorRWW-0-7fea7d614880aa6a7eaa6188b1245dc5)
2.列表的切片
每个list(list是笔者自定义的变量)中的元素从0开始计数,如下代码可以选取list中的第一个元素。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_44.jpg?sign=1739316224-iKWW8tWjyoRWNzUrafbHJOyP90CbzeAK-0-3ad01979311303d2740f55fc14c0dbbc)
运行结果如下。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_45.jpg?sign=1739316224-qnJUxZfzQNlamF5GeEUUdEtI8jOM7MBp-0-8c535c17e7b0ddb4fec2f9fd459180b0)
列表删除操作可以使用remove()方法,只需要在变量名称后面加一个点号,就可以轻松调用。PyCharm有自动联想功能,选中目标方法或函数,按【Tab】键即可快速键入,如图1-16所示。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_46.jpg?sign=1739316224-oydahjX2LZaml36lOXvAb0XuI39u3UEn-0-3d70e1d7402ec43499658cb7d8eb5c94)
图1-16
以下代码用于删除第3个元素,并用print()函数将结果打印出来。其中remove()方法用于删除列表的元素。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_47.jpg?sign=1739316224-d8FfarnqfAWF4MNpyGWh0V0QheGXjYrX-0-596571e9cb37f05e990827483a7824fa)
1.3.4 元组
元组与列表类似,不同之处在于元组的元素不能修改。元组写在小括号(())里,元素之间用逗号隔开,如下所示。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_48.jpg?sign=1739316224-XJSu8KLbCoa7uFHgkKnsn7hYObP9UkZa-0-2d7132882dc9a89638dccc462209c879)
运行结果如下。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_49.jpg?sign=1739316224-4R3aYRegLcra5QYxbOl2EptPUB9LcWXQ-0-85a035d8209810f13d75e3ae3db3f0d2)
1.3.5 集合
集合是一个无序、不重复元素序列,可以使用大括号({})或set()函数创建集合。需要注意的是,一个空集合必须使用set()函数创建而不能使用大括号,因为大括号是用来创建空字典的,如下所示。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_50.jpg?sign=1739316224-tdq05RAsnhuQ3nlskVmkWlCKAEZdn1OC-0-6a7cbed5203c247dc79816a984fbb2ba)
运行结果如下。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_51.jpg?sign=1739316224-jj2LkHvWzEHoof6Fa6dNBjwAD7LgdSx3-0-5a2fb44ca403a36d4d23886703afac5a)
1.3.6 字典
字典是一种可变容器模型,且可存储任意类型的对象,用{}标识。字典是一个无序的键(key)值(value)对的集合,格式如下所示。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_52.jpg?sign=1739316224-1gfQORAOXB1wEX07yBOT6LqmPhSwDm6P-0-3d46891a42296a5e7ec3fb72bc048b07)
接下来创建一个字典,代码如下。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_53.jpg?sign=1739316224-SqydBPHq9T1ipWXvdVBnqZOCuu2eZByH-0-54340e21b1b071820ffecf0418a5c8b5)
运行结果如下。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_54.jpg?sign=1739316224-tyIrtg0kjdjQtLDx2VvHeAe6fsISQomC-0-5d3a66c39a0c0a7963ce20202fbd5604)
其中name是一个key(键),liming是一个value(值)。
当字典增加数据时,可以使用下面的方法。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_55.jpg?sign=1739316224-UGxGysUqh6V0ow7oULKQHhEcsMeOWV7g-0-ca6def4fcfe6184a6bdb74eb4ca30ae3)
运行结果如下。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_56.jpg?sign=1739316224-9ELukLJQ2PnmZRswoC0LEkiimhU8lDAr-0-14ed258c3138617f735e52b38e20f6f5)
当字典删除数据时,可以使用del()函数,代码如下。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_57.jpg?sign=1739316224-WvUayZM2QMNfSydBvApcveDa73RV4a8I-0-636e0e246671f67bff17fd39e59614a8)
运行结果如下。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_58.jpg?sign=1739316224-a2wWEXD6R735GaqWct2UdztKdK7rjJJY-0-458483307fc96dffad4da71480c9f262)