购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.9 字符串入门

在Python中,字符串可以用来做注释内容,以及使用字符串变量定义内容。字符串通常由单引号(')、双引号("),或者由3个单引号或3个双引号引起来的任意文本组成,并且引号必须成对出现。引起来的内容可以是任何字符,可以是英文,也可以是中文。

创建字符串很简单,为变量分配一个带引号的值即可。下面是正确的字符串定义示例。

str1='hello world'
str2="python"
str3='''python'''

下列代码演示字符串的使用,源代码见code\2\python_str.py。

1  strName='Life is short,you need Python'
2  print(strName)

代码的执行结果如下。

Life is short,you need Python

2.9.1 基本操作

字符串的基本操作主要包括通过索引获取字符串中的字符、重复输出字符串、修改字符串和连接字符串。

1.通过索引获取字符串中的字符

定义如下所示的字符串。

str_name ="I Love Python"

字符串在计算机内存中的存储顺序如图2-7所示。

图2-7 字符串存储顺序

从图2-7中可以看到,字符串中的每一个字符都对应一个正向索引和一个负向索引,可以利用“[索引]”的方式来获取字符串对应的值,这种读取方式称为索引读取。字符串的索引可以从0开始,到字符串的最大长度-1;也可以从-1开始,到字符串的最大长度。

下列代码演示通过索引获取字符串中的字符,源代码见code\2\str_define.py。

1  str_name='I Love Python'
2  print(len(str_name))
3  print(str_name[0])
4  print(str_name[7])
5  print(str_name[-13])
6  print(str_name[-6])

代码的执行结果如下。

13
I
P
I
P

其中,len()函数可以获取字符串的长度。通过索引方式获取字符串中的内容,可以使用正向索引,也可以使用负向索引,如str_name[7]和str_name[-6]得到同样的值“P”。

2.重复输出字符串

有时候需要对一个字符串重复输出多次,可以使用星号(*)。*代表重复操作。

下列代码演示重复输出字符串,源代码见code\2\str_repeat.py。

1  a='hello python'
2  print(a*3)

代码的执行结果如下。

hello python hello python hello python
3.修改字符串

在Python中,可通过字符串的切片方式对字符串进行修改。

下列代码演示错误的字符串修改方式,源代码见code\2\str_modify_err.py。

1  a='hello python'
2  a[1]='f'

代码的执行报错,如下所示。

Traceback (most recent call last):
 File "e:/book/code/2/str_modify.py", line 2, in <module>
a[1]='f'
TypeError: 'str' object does not support item assignment

大致的意思是,str对象不支持项目的赋值。无法对字符串的某一个字符直接进行修改。

下列代码演示使用切片方式修改字符串,源代码见code\2\str_modify.py。

1  a='I Love Python'
2  b=a[0:7]+"Life"
3  print(b)

代码的执行结果如下。

I Love Life

其中a[0:7]属于字符串的切片用法,将在2.9.3小节进行详细介绍。

4.连接字符串

连接两个字符串使用加号“+”进行操作。

下列代码演示字符串的连接,源代码见code\2\str_add.py。

1  a="hello"
2  b="python"
3  #用加号连接三个字符串
4  c=a+","+b
5  print(c)

代码的执行结果如下。

hello,python

当对多个字符串进行连接时,推荐使用join()函数,性能更好。join()函数会在后文详细介绍。

2.9.2 字符串转义

在Python中,当需要在字符串中使用一些特殊字符时,需要用到反斜线(\)表示的转义字符。Python中常见的转义字符如表2-2所示。

表2-2 常见的转义字符

下列代码演示转义字符的使用,源代码见code\2\python_trans1.py。

1  #制表符和换行符转义
2  print('Life\tIs\tShort\nI\tUse\tPython')
3  #单引号和双引号转义
4  print("单引号输出\'\n双引号输出\"")

代码的执行结果如下。

Life    Is      Short
I       Use     Python
单引号输出'
双引号输出"

如果不想让转义字符生效,只想显示字符串原来的样子,就要用r或R来定义原始字符串。如对于一个Windows文件路径E:\book\code,若要原样输出,可以在字符串前面加字母“r”或“R”。

下列代码演示原样输出字符串,源代码见code\2\python_trans2.py。

1   print(r'E:\book\code')
2   print(R'E:\book\code')

代码的执行结果如下。

E:\book\code
E:\book\code

2.9.3 字符串切片

在Python中,使用字符串切片来完成字符串截取操作。字符串切片指从字符串中取出相应的元素,组成新的字符串。

使用一对中括号、开始索引、结束索引以及可选的步长,可以定义一个切片。使用切片的语法格式如下。

字符串[开始索引:结束索引:步长]

其中,步长默认为正值,开始索引默认为0,结束索引默认为字符串长度+1。

如果步长为负值,则开始索引默认为-1,结束索引默认为字符串长度的负值。

步长默认为1。步长为正值,截取操作从开始索引从左往右走,称为正向索引;步长为负值,截取操作从开始索引从右往左走,称为负向索引。

步长的意义为定义跳过的长度。

具体字符串的切片索引详见图2-8。

图2-8 字符串的切片索引

切片的一些常见用法如下。

[:]指提取从开头到结尾的整个字符串。

[开始索引:]指从开始索引提取到结尾。

[:结束索引]指从开头提取到结束索引-1。

[开始索引:结束索引]指从开始索引提取到结束索引-1。

[开始索引:结束索引:步长]指从开始索引提取到结束索引-1,按照步长值进行字符提取。有时为了简化,会省略开始索引和结束索引。

下列代码演示字符串切片操作,源代码见code\2\str_slice.py。

1  str_name='I Love Python'
2  #长度为13
3  print(len(str_name))
4  print(str_name[0:13])
5  print(str_name[:])
6  print(str_name[0:])
7  str_name2='0123456789'
8  #逆序
9  print(str_name2[::-1])
10 #步长为2,从开头到结尾,正向索引
11 print(str_name2[0::2])
12 #反向索引
13 print(str_name2[-10::2])

代码的执行结果如下。

13
I Love Python
I Love Python
I Love Python
9876543210
02468
02468

2.9.4 字符串跨越多行

在实际开发中,字符串可能变得很长,这就需要解决字符串跨越多行的问题。在不拆分字符串的前提下,可以使用三引号进行处理。

三引号在字符串赋值的情况下,通常用来处理字符串跨越多行的问题,可以大大提高长字符串的可读性。三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。

下列代码演示三引号方法的使用,源代码见code\2\str_line.py。

sql= '''
create table test1(id int not null auto_increment primary key,
username varchar(50),password varchar(50))
'''

代码的执行结果如下。

create table test1(id int not null auto_increment primary key, username 
varchar(50),password varchar(50))

这段操作数据库的赋值语句比较长,采用三引号来解决字符串跨越多行的问题,字符串不需要转义,也不需要拼接,还方便修改。 LiyMYvKabieoIBhbhGg42dP2USUVjrTcOF427kiUM3DdzKcePjkpXkzM1ff7jaqJ

点击中间区域
呼出菜单
上一章
目录
下一章
×