
1.3.6 字符串及其基本操作

1-6 字符串及其基本操作
字符串(String)就是若干个字符的集合,Python中的字符串必须由双引号("")或者单引号(' ')包围,其双引号和单引号没有任何区别,具体格式为:

字符串的内容可以包含字母、标点、特殊符号、中文、日文、韩文等全世界的所有文字。
下面都是合法的字符串:

1.处理字符串中的引号
当字符串内容中出现引号时,用户需要进行特殊处理,否则Python会解析出错,例如:

由于上面字符串中包含了单引号,此时Python会将字符串中的单引号与第一个单引号配对,这样就会把'I'当成字符串,而后面的m a great coder!'就变成了多余的内容,从而导致语法错误。
对于这种情况,一般有以下两种处理方案。
(1)对引号进行转义
在引号前面添加反斜杠“\”就可以对引号进行转义,让Python把它作为普通文本对待。
【例1-14】 反斜杠“\”的使用。

运算结果:

(2)使用不同的引号包围字符串
如果字符串内容中出现了单引号,那么可以使用双引号包围字符串,反之亦然。
【例1-15】 使用不同的引号包围字符串。

运算结果:

2.字符串的换行
Python不是格式自由的语言,它对程序的换行、缩进都有严格的语法要求。要想换行书写一个比较长的字符串,必须在行尾添加反斜杠“\”。Python也支持表达式添加反斜杠“\”的换行。
3.长字符串
Python长字符串由三个双引号(""")或者3个单引号(''')包围,语法格式如下:

在长字符串中放置单引号或者双引号不会导致解析错误。
4.转义字符
对于ASCII编码来说,0~31(十进制)范围内的字符为控制字符,它们都是看不见的,不能在显示器上显示,甚至无法从键盘输入,只能用转义字符的形式来表示。不过直接使用ASCII码记忆不方便,也不容易理解,所以针对常用的控制字符,Python语言定义了转义字符方式,如表1-2所示。
表1-2 Python支持的转义字符

转义字符在书写形式上由多个字符组成,但Python将它们看作是一个整体,表示一个字符。
【例1-16】 使用转义字符来打印表格。

运算结果:

此外,转义字符以“\0”或者“\x”开头的表示编码值,前者表示跟八进制形式的编码值,后者表示跟十六进制形式的编码值,具体格式如下:

式中,dd表示八进制数字,hh表示十六进制数字。由于ASCII编码共收录了128个字符,\0和\x后面最多只能跟两位数字,所以八进制形式\0并不能表示所有的ASCII字符,只有十六进制形式\x才能表示所有ASCII字符。
【例1-17】 使用八进制、十六进制来显示ASCII码。

运算结果:

从例中可以看出,字符4、5、6对应的ASCII码八进制形式分别是64、65、66,字符B、D、F、H、J、L的十六进制形式分别是42、44、46、48、4A、4C。