![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=1738919479-qSSF1k8QSx1CY7wwA541XX1TPLjcXDvX-0-cc65ccaa00013fd0a3b472df03ee1e55)
2.运算类型
Python 3所支持的运算类型包括加法、减法、除法、整除、取余、乘法和乘方。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_25.jpg?sign=1738919479-1rU8mMxdDgic9S6cmYruyIBy4mmuKrjW-0-23779c73a0c2ad360c673518cacbda42)
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=1738919479-F3GkiQjZTqV1GoV9iZDCzXCgCEktFzjx-0-0bb87e6b7c63e5ba9199feac7ebd3264)
2.字符串的表示方式
如果要在单引号字符串中使用单引号本身,在双引号字符串中使用双引号本身,则需要借助转义符(\),如下所示。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_27.jpg?sign=1738919479-XSX6rtcH2MCYy6qDeJ2Ty7gDQYlACDuJ-0-bc97b089d46719632dab79e04ac7b76f)
输出结果如下。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_28.jpg?sign=1738919479-AKptSOwc20FV2tZkh80TOge3AUWH9Qt4-0-7bdd884a299e4f43d70ad71a4b8f2df6)
注意:在一个字符串中,行末单独的反斜杠表示下一行继续,而不是开始写新的一行(详见1.2.2节)。另外,可以使用双反斜杠(\\)来表示反斜杠本身,而\n表示换行符。
如果想要指示某些不需要使用转义符进行特别处理的字符串,那么需要指定一个原始字符串。原始字符串通过给字符串加上前缀r或R的方式指定,比如需要原样输出\n而不是令其换行,则代码如下。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_29.jpg?sign=1738919479-QHOGgoJB0kcPfUctb2IelmNvxRhIPFqj-0-816feed4f6b2fcbf1b43bff25f0ab0a4)
输出结果如下。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_30.jpg?sign=1738919479-QEM04myV1q3Qc1I63Ug7ffM6NXtUT05J-0-ecb1fa5f15a386b6d738a0f6eacd6650)
3.字符串的截取
字符串的截取格式如下所示。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_31.jpg?sign=1738919479-YEmFXzr00kMdzwIgQcgIV7f4oDhtgPtK-0-2ac464cd7af9bfe0568b2820f11d33e7)
此处解释一下为什么加1:字符串的截取从start_index开始,到end_index结束,也就是大家常理解的左闭右开,如下所示。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_32.jpg?sign=1738919479-xXHq4pNjgB36jYzZPEUJB2Kp2KYJNTB3-0-f44fc55885c24c832c981b70bea7e115)
4.字符串运算
尝试下面的代码:
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_33.jpg?sign=1738919479-x0pMhtUslCNe68lOKHG0aKGn01oGxV9g-0-fb083002cf3d3b9a8301d9e3236af013)
此时,运行程序会报错,错误提示如下所示,为什么呢?
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_34.jpg?sign=1738919479-ML6bbHwJl6UCyfXkKwAYKLonVzgUBalH-0-137ff0af1a506d5ebc61f589351b9730)
字符串(string)只是Python中的一种数据类型,下面的语句在赋值的时候右侧用了单引号,数据类型是字符串。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_35.jpg?sign=1738919479-m2VJdTSEiItKhSJdarwtRZdVv8eAPwEw-0-747a214659d6201715a922d55cd1bec4)
下面语句的数据类型为整型(int)。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_36.jpg?sign=1738919479-vHcmEWShetO6eVlI4sJm7u3SUpn0pj1l-0-8eac85ab8568e4d54e411b6f6b6f2d7c)
不同的数据类型之间是不能进行运算的,但是,不同数据类型可以相互转换,以上代码进行修改后就可以正常运行,修改后的代码如下。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_37.jpg?sign=1738919479-eug0n055oMcWfGLkNa7SedKMdCNsQlRJ-0-2ec65a6954635ab77aa043de72f8245b)
注意:“+”号用在字符串中间是连接符,用在数值中间是运算符;int()将括号中的数值或文本转换成整型数据类型。
运行代码后,即时窗口中打印的结果是2,如图1-15所示。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_38.jpg?sign=1738919479-2GnPP45LE9kFb7tD24oRof4E0PkaJThI-0-456a0eace9267e2b1646543200af4e34)
图1-15
四则基础运算如下。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_39.jpg?sign=1738919479-0afVeuOgYpnfFDzvmTKzhtcClc1RBbTy-0-7882f33eb7a20d9a1b73f6e65b3c247d)
因为相加的双方是数值型数据,所以此时“+”号是运算符,运行结果如下。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_40.jpg?sign=1738919479-Br4dJ7dOZTw6ORbZ44xyoBdtOy3txb9a-0-90fd8298775788ad3939271d058a5892)
当相加的双方是字符型数据时,“+”号是连接符。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_41.jpg?sign=1738919479-9By0cS5O8KEf8xgo2Y8zafmjP7f7VxOP-0-5b5b43052010dca99ea7b8431d8319d7)
运行结果如下。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_42.jpg?sign=1738919479-DRQ9DYF2ALujy2C75joD6Dw7RTAZuFZB-0-f1608f37b81e5e73f918aea6cad2034b)
1.3.3 列表
1.列表格式
Python列表是任意对象的有序集合,写在中括号([])里,元素之间用逗号隔开。这里的“任意对象”,既可以是列表,也可以是字符串,如下所示。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_43.jpg?sign=1738919479-jjmihC0nkHLyA0vgr4Q2DMeo8RF7Zemu-0-0e6eee63d65deee713d61539ab0b0856)
2.列表的切片
每个list(list是笔者自定义的变量)中的元素从0开始计数,如下代码可以选取list中的第一个元素。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_44.jpg?sign=1738919479-JsoD2az3mFO30x8hzN8nAAIQSgqWxSHr-0-69bfb3e6bec859eac759da5c697e10f0)
运行结果如下。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_45.jpg?sign=1738919479-RELPQ99at5Fq75F03VW6T8Tzb6FyBw01-0-ec30f29fbd9d3a66aa7d399ab0a239b6)
列表删除操作可以使用remove()方法,只需要在变量名称后面加一个点号,就可以轻松调用。PyCharm有自动联想功能,选中目标方法或函数,按【Tab】键即可快速键入,如图1-16所示。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_46.jpg?sign=1738919479-cpCjiiGAwNRlFXCkZEuq2oQBWB08Gv0g-0-6946bc7958a3d3eef653873ce74953be)
图1-16
以下代码用于删除第3个元素,并用print()函数将结果打印出来。其中remove()方法用于删除列表的元素。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_47.jpg?sign=1738919479-YkiOQEIF2gFCtGEXh5Px5flw4ehpvVLE-0-08dc231ff53a017b4090c591bc0b367d)
1.3.4 元组
元组与列表类似,不同之处在于元组的元素不能修改。元组写在小括号(())里,元素之间用逗号隔开,如下所示。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_48.jpg?sign=1738919479-2UDJcixdSvlGoptv1Y63p5hraC6dsQR8-0-06abff09357772391b7b3deb7b94b154)
运行结果如下。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_49.jpg?sign=1738919479-YFXpOmlQgFesJTHLvsVz0QDelMpzvqqH-0-eca98787afb255967e0a5ed0786f03be)
1.3.5 集合
集合是一个无序、不重复元素序列,可以使用大括号({})或set()函数创建集合。需要注意的是,一个空集合必须使用set()函数创建而不能使用大括号,因为大括号是用来创建空字典的,如下所示。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_50.jpg?sign=1738919479-DAfzg0qXpHxmKg6z4CdUhD1CnQfES9Kw-0-b4f22c2d4b638fe13f31a1c8745db336)
运行结果如下。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_51.jpg?sign=1738919479-H6QFyGcjs7iperFqTHN73Ppxvbtb6cU9-0-4f03116fd2cb800e8a636a026ab8271a)
1.3.6 字典
字典是一种可变容器模型,且可存储任意类型的对象,用{}标识。字典是一个无序的键(key)值(value)对的集合,格式如下所示。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_52.jpg?sign=1738919479-p0J5UFfTbt6Vf0lYev80dmCymYKd0jqI-0-621d9c43508994bafb231f24ee287f7e)
接下来创建一个字典,代码如下。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_53.jpg?sign=1738919479-2jknHR66qHC3FTyXx7bqJD5lWUqbCwps-0-80cafc1ea7ea2412bce4d25e394c6cc5)
运行结果如下。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_54.jpg?sign=1738919479-Tp4jgig0jsJLAewebGUUrwQbGhoG9A3C-0-3a2afe85dcd7a8ae9555298e841d540a)
其中name是一个key(键),liming是一个value(值)。
当字典增加数据时,可以使用下面的方法。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_55.jpg?sign=1738919479-j7wzWTrellAftxa4orKPGHxiFOXLIjEh-0-bc9ce23de1d99afbf681ba3011ca31ee)
运行结果如下。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_56.jpg?sign=1738919479-POxtNzdfRcriklWl5Flct7eSG8j2R6ul-0-8ed0c34e05624308171be26fcaca1078)
当字典删除数据时,可以使用del()函数,代码如下。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_57.jpg?sign=1738919479-ELbqKW1Ok6xhATIIln3mmo10QLFUtxC4-0-7c3a76f582be0c21563920964e32357f)
运行结果如下。
![img](https://epubservercos.yuewen.com/3DAE1E/17545851106441906/epubprivate/OEBPS/Images/txt001_58.jpg?sign=1738919479-UX14CtDbhpJqo2eH579ONLfmsqYUJbkt-0-373add86967b82523bd86a8341eb36fe)