![Python程序设计基础](https://wfqqreader-1252317822.image.myqcloud.com/cover/423/30058423/b_30058423.jpg)
2.2.2 字符串
1.字符串的组成
(1)字符串(String)
字符串是由字符组成的序列,如'Python is wonderful!'、'16300240001'、'张三'、''等。其中,''表示空字符串。字符串和数字一样,都是不可变对象。所谓不可变,是指不能原地修改对象的内容。例如:
![](https://epubservercos.yuewen.com/E9F0BA/16523167304945506/epubprivate/OEBPS/Images/txt002_24.jpg?sign=1738887126-qPkq16PZUwDT0okay1q7T8QLOe4PcKN9-0-bc6e82b77cb3a066637ff46c803b074f)
(2)字符串界定符
字符串界定符用来区分字符串和其他词法单位,有以下三种形式:
①单引号,如:' ','1+1=2','He said "how are you?"'。当字符串中含有双引号时,最好使用单引号作为界定符。
②双引号,如:"","中国","It's my book."。当字符串中含有单引号时,最好使用双引号作为界定符。
③三引号,可以是连续三个单引号,也可以是连续三个双引号,如'''Hello''',"""您好"""。其常用于多行字符串,例如之前介绍的文档字符串。
(3)转义符
转义符是一些特殊的字符。Python用反斜杠(\)来转义字符,以便表示那些特殊字符,见表2-1。
表2-1 常见的转义符
![](https://epubservercos.yuewen.com/E9F0BA/16523167304945506/epubprivate/OEBPS/Images/txt002_25.jpg?sign=1738887126-fvgo1VWOnXknSBvwLH3GyasoWTu9fpgw-0-74a86e2d5ebf02ce46cfdbce6e961b9f)
以下是使用转义符的几个例子:
![](https://epubservercos.yuewen.com/E9F0BA/16523167304945506/epubprivate/OEBPS/Images/txt002_27.jpg?sign=1738887126-6VesRyOcVljEiipz207BwJ5lU2o0Ofwm-0-0a732380094abca44f337348ca3324dd)
(4)原始字符串
原始字符串用于显示字符串原来的意思,不让转义字符生效。这就要用r或R来定义原始字符串。例如:
![](https://epubservercos.yuewen.com/E9F0BA/16523167304945506/epubprivate/OEBPS/Images/txt002_28.jpg?sign=1738887126-lFgwuqAhJako4xDkGVCghfXLNyz463jO-0-7cc84619ce9b4c11724afa373d078568)
在上例中,如果不使用原始字符串,就得多次使用转义符'\\':
![](https://epubservercos.yuewen.com/E9F0BA/16523167304945506/epubprivate/OEBPS/Images/txt002_29.jpg?sign=1738887126-BCZJoV3wasRIRVpMXMtA2X5o2A2v5d11-0-5054a9eab423f9ee54aa8d0768f0e33a)
2.字符串操作的相关方法
(1)字符串长度
使用len()函数,可以确定字符串包含多少个字符,即字符串的长度。例如:
![](https://epubservercos.yuewen.com/E9F0BA/16523167304945506/epubprivate/OEBPS/Images/txt002_30.jpg?sign=1738887126-doHzVMyVmkodW1HGMQ2Z0ydnjFXpny6j-0-da65794aedb76c94585073974c9e0e52)
(2)字符串连接
利用加法运算符“+”可以让两个字符串首尾相连。例如:
![](https://epubservercos.yuewen.com/E9F0BA/16523167304945506/epubprivate/OEBPS/Images/txt002_31.jpg?sign=1738887126-hZiYnRPAltFUtTnko1eYseZ2qLHy86gn-0-2d8f5f9ccaab21ef9cb1c97921f53c84)
从第2条语句的输出可以看出,IDLE环境的输出显示自动加了一个'\',以免引起歧义。第3条语句的输出说明,'\'实际并不包含在连接结果里。
(3)字符串重复
利用乘法运算符“*”可以让一个字符串自身多次重复并拼接在一起。例如:
![](https://epubservercos.yuewen.com/E9F0BA/16523167304945506/epubprivate/OEBPS/Images/txt002_32.jpg?sign=1738887126-iy2f4XobOqBu0mnLwbLfHYnYB73cS62l-0-dbe6917b06f485da2f7c67c4eb33e1c4)
(4)字符串索引
利用方括号运算符[ ]可以通过索引值得到相应位置(下标)的字符。
Python的索引方式有两种:①从前往后的正向索引,n个字符的字符串,其索引值从0至n-1;②从后向前的负数索引,n个字符的字符串,其索引值从-1至-n。例如:
![](https://epubservercos.yuewen.com/E9F0BA/16523167304945506/epubprivate/OEBPS/Images/txt002_33.jpg?sign=1738887126-y9jgRpHY0vmjQydvjgEsrcm5YfUPF5Im-0-f629a12aa952440b4ecdd0fc883fd5be)
(5)字符串切片
在Python程序中,可使用切片(slice)从字符串中提取子串。切片是Python序列的重要操作之一,适用于字符串、列表、元组、range对象等类型。
切片的参数是用两个冒号分隔的三个数字。第一个数字表示切片开始位置(默认为0),第二个数字表示切片截止位置(但不包含这个位置,默认为字符串长度),第三个数字表示切片的步长(默认为1),当步长省略时,可以顺便省略最后一个冒号。
例如:
![](https://epubservercos.yuewen.com/E9F0BA/16523167304945506/epubprivate/OEBPS/Images/txt002_34.jpg?sign=1738887126-eK20VgbeLj2Sr4AMp7FcyJehMbgGx7RZ-0-02c622e2204365e3e84cb8dd7676650c)
与字符串索引不同,切片操作不会因为下标越界而抛出异常,而是简单地在字符串尾部截断或者返回一个空字符串。
因为字符串是不可变的对象,所以不能对字符串切片赋值。例如:
![](https://epubservercos.yuewen.com/E9F0BA/16523167304945506/epubprivate/OEBPS/Images/txt002_35.jpg?sign=1738887126-FqBHQQrgFXmN1ZOlQDGKGwAkYZLVKARR-0-66f75a323c9055b0d4ffc71dcd5a76f5)