![Python从入门到项目实践(超值版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/265/27563265/b_27563265.jpg)
3.3 字符串类型
仅有数字类型在日常生活中显然是不够的,为了更方便地对文本数据和对象进行处理,Python中引入了我们在其他语言也熟悉的数据类型——String。
3.3.1 字符串的定义
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P54_36751.jpg?sign=1739559958-nOfbMgN6l66YhLCwsiGqqUOXGdVx9ogL-0-dc1647380b80ba701fa7d4bc787d5c9d)
在创建字符串时,需要用引号来进行声明。Python提供了单引号、双引号、三引号三种方式来定义字符串。实例如下。
【例3-20】单引号定义字符串。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P54_78694.jpg?sign=1739559958-yv2xtWNwdZqsyTGQd0Z4mHiC64fQWx6C-0-f530526736300160dd3f77af550a2754)
另外,Python还允许引号间的嵌套,例如,单引号可被嵌套进双引号。同时这种多引号的表达方式还可以解决某些书写的兼容问题。
【例3-21】双引号定义字符串。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P55_78696.jpg?sign=1739559958-Y9pgKqDSaFuBji6b1uW2nHA2QsA69PY0-0-4b426e70773e4777ffd5185034b54f0e)
在此实例中英语书写语句中的'被双括号兼容但是却被单引号错误识别。因此在实际使用中,即使引号间没有区别,还是需要根据实际使用情况进行选择。
另外,三引号的使用方法也较为特殊,三引号允许换行,输出自动多行拼接。但是单引号和双引号就不允许换行,实例如下。
【例3-22】三引号定义字符串。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P55_78697.jpg?sign=1739559958-wUWHc3vPuwUPmJYvVYu67BOzKknWth5p-0-103d8939eef02f2c95aabbce3d40f4e4)
在字符串的定义过程中,也可能遇到如下情况:
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P55_78698.jpg?sign=1739559958-7endfRnx6DXwE2qL4gZ17DMpVA1S8lpQ-0-d0f9bbd7c0a0f83602ca82b9f8894ddc)
可以看到,字符串被从中间换行了。这就是接下来要介绍的“转义字符”。
在上述实例中,\n为转义字符,代表换行。Python的常见转义字符及其含义如表3-9所示。
表3-9 转义字符
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-T55_78699.jpg?sign=1739559958-JVrMsf3qqyNqbHIvUxcrQ9ksTdMHHNgT-0-616d6894e842b90b2fade8c7f6e33293)
转义字符在书写格式上提供了很大的便利性,但是如果并不想让转义字符对应的字符起作用,而是单纯的正常显示,可以在字符串前加上r或者将转义字符的\用\\替换。实例如下。
【例3-23】屏蔽字符。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P56_78700.jpg?sign=1739559958-dlax03MGJzGMoQNFQibt0n120FOCjNcN-0-25066a756735098d08deb5049a99d665)
3.3.2 字符串格式化
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P56_37273.jpg?sign=1739559958-8RzMyylSJeiSCiROvrYRzqZwHV2NI1LK-0-d4d26491a4a4a5ad407eb05e4f620b56)
不同于数字类型的操作,字符串的操作更加多样化,和其他语言一样,字符串的基本操作——格式化输出,依旧是重点。格式化输出是计算机语言必不可少的部分。
格式符存在的目的是为真实值进行占位,方便控制显示输出的格式。格式符主要有以下类别,如表3-10所示。
表3-10 格式化操作符
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-T56_78701.jpg?sign=1739559958-qddPuYvFvjTnbKZhbRD4iXyYRIm5dDRR-0-7d051915809d192f5f87e5fe254afc02)
对Python的输出可以进一步进行控制,采用如下方式。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P56_78703.jpg?sign=1739559958-wGGcRc2fyMCELphRJ1MOaeGJTCl3rYNT-0-2473ff6632821364457e21d7c86781ba)
其格式含义如下。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P56_78704.jpg?sign=1739559958-IBcZT7aeqT3n3lSzUDDB1nRHYzONdKkJ-0-a6c5c250b0cfce1be6c48b39175a1937)
其中的格式参数内容如下。
- name:命名可以选择,用于指定key。
- flags:对齐方式,表示右对齐,-表示左对齐,0表示用0填充,若为空格则表示正数左侧填充空格。
- width:显示宽度。
- precision:小数点后精度。
- typecode:格式化操作符。
具体实例如下。
【例3-24】格式化输出数值。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P56_78707.jpg?sign=1739559958-V8GkWbIzcjpuglV7AQfh5vyDKKIleRo3-0-a2027c4bf84feb13c382ad9d439bd57f)
Python中内置的%操作符可用于格式化字符串操作,控制字符串的输出。Python中还有其他的格式化字符串的方式,但%操作符是最基础最方便的。
其他的还有在后面将会讲到的format()方法。
3.3.3 字符串内置的函数
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P57_37475.jpg?sign=1739559958-5GCz3xF71DuFBMLup5u7UdihodiNguE5-0-b3db5621044a42de75bf22e9997dfc41)
Python为字符串操作提供了全面而多样的内置函数,涉及字符串的替换、删除、复制、拼接、比较和查找等各个方面。下面来了解部分常用的函数。
(1)字符串的搜索和替换。
包括以下内置的函数,如表3-11所示。
表3-11 字符串的搜索和替换的内置函数
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-T57_78711.jpg?sign=1739559958-5IAsjA7Je0g4Q1LUXfWeRBweX60TNpJp-0-ba0ffe6dd552f8128e42c130a24ca436)
使用范例如下。
【例3-25】字符串替换函数。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P57_78712.jpg?sign=1739559958-NOBpA2Gdi6hGQJEbdVhayagRoZrbelI9-0-4b3e17b5d571e321c3c771a57b2ac155)
需要注意的是,字符串的位置查找返回的下标中,字符串第一个字符的下标被定义为0。
(2)字符串去空格。
字符串去空格的函数如表3-12所示。
表3-12 字符串去空格的函数
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-T58_78720.jpg?sign=1739559958-jhzUbcJJBkNAdYzWdmKVU26mQgPZ7P6g-0-8596ac7d94bf2b248054a10c2ec710df)
因为方法简单,故不再列举实例。
(3)字符串判断。
字符串判断的函数如表3-13所示。
表3-13 字符串判断的函数
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-T58_78721.jpg?sign=1739559958-tRhCDr2u97jNe85BDnTLSZEQhfwbOHBn-0-c7581d1f65d21e70a5b707d300536c6d)
(4)字符串的分割截取。
【例3-26】字符串分割截取。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P58_78722.jpg?sign=1739559958-5iFJ3bHofR2ugvMJwz621jqjmVX6YRrk-0-82c4b876685fc7b49c9d169464d2d3ae)
(5)字符串的拼接。
Pyhton提供了str.join()方法来进行字符串的拼接操作。实例如下。
【例3-27】字符串拼接。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P58_78723.jpg?sign=1739559958-91teRSHjN8EQcFWCXrgkt7cEVNjDTH1H-0-0561c060b695334a482838ea929e8e2a)