目录
4.1 字符串简介
在汉语中,将若干个字连起来就是一个字符串,例如“千锋教育”就是一个由4个汉字组成的字符串。在程序中,字符串是由若干字符组成的序列。
4.1.1 字符串的概念
在前面的章节中,大家已接触过简单字符串,Python中的字符串以引号包含为标识,具体有3种表现形式:
- 使用单引号标识字符串
使用单引号标识的字符串中不能包含单引号,具体如下所示:
- 使用双引号标识字符串
使用双引号标识的字符串中不能包含双引号,具体如下所示:
- 使用三引号标识字符串
使用3对单引号或3对双引号标识字符串可以包含多行,具体如下所示:
这种形式的字符串经常出现在函数定义的下一行,用来说明函数的功能。
通常使用前两种形式创建字符串,之后需要通过变量引用字符串,具体示例如下:
注意Python中的字符串不能被修改,具体示例如下:
虽然字符串不可以修改,但可以截取字符串一部分与其他字符串进行连接,具体示例如下:
上述示例中,str[0:14]截取"xiaoqian is a “,然后再与"girl"进行连接,最后输出"xiaoqian is a girl”。字符串的截取与连接将会在后面详细讲解。
4.1.2 转义字符
字符串中除了可以包含数字字符、字母字符或特殊字符外,还可以包含转义字符。转义字符以反斜杠“\”开头,后跟若干个字符。转义字符具有特定的含义,不同于字符原有的意义,故称转义字符。表中列出了常用的转义字符及含义。
在表中,’\ddd’和’\xhh’都是用ASCII码表示一个字符,如’\101’和’\x41’都是表示字符’A’。转义字符在输出中有许多应用,如想在单引号标识的字符串中包含单引号,则可以使用如下语句:
其中,“’”表示对单引号进行转义。当解释器遇到这个转义字符时就理解这不是字符串结束标记。如果想禁用字符串中反斜杠转义功能,可以在字符串前面添加一个r,具体示例如下:
4.2 字符串的输出与输入
在实际开发中,程序经常需要用户输入字符串并进行处理。字符串被处理完成后,又需要输出显示。上述过程就涉及到字符串的输入与输出。
4.2.1 字符串的输出
最简单的字符串输出如下所示:
此外,Python支持字符串格式化输出,具体示例如下:
字符串格式化是指按照指定的规则连接、替换字符串并返回新的符合要求的字符串,例如示例中age的内容18以整数形式替换在要显示的字符串中。字符串格式化的语法格式如下:
其中,format_string为格式标记字符串,包括固定的内容与待替换的内容,待替换的内容用格式化符号标明,string_to_convert为需要格式化的数据。如果需要格式化的数据是多个,则需要使用小括号括起来并用逗号分隔。
format_string中常用的格式化符号如表所示。
接下来演示格式化符号的用法,如例所示。
除了上表的格式化符号,有时还需要调整格式化符号的显示样式,例如是否显示正值符号“+”,下表中列出了辅助格式化符号。
接下来演示辅助格式化符号的用法,如例所示。
在例中,第2行输出字符串宽度为10,并且以0x形式显示65对应的十六进制数,注意默认是右对齐的。第3行输出字符串宽度为10,并且以0X形式显示65对应的十六进制数,注意“-”代表左对齐。第4行输出字符串中正值时前加“+”。第5行输出字符串宽度为5,显示的小数点精度为3。第6行通过设置显示宽度为5。第7行通过设置小数点精度为3。
4.2.2 字符串的输入
前面的程序中,字符串都是先定义后使用。如果需在程序运行时,通过键盘输入字符串,则可以使用input()函数。它表示从标准输入读取一行文本,默认的标准设备是键盘,其语法格式如下:
其中,prompt表示提示字符串,该函数将输入的数据作为字符串返回。
接下来演示其用法,如例所示。
4.3 字符串的索引与切片
字符串可以通过运算符[]进行索引与切片,字符串中每个字符都对应两个编号(也称下标),如图所示。
在图中,字符串str正向编号从0开始,代表第一个字符,依次往后;字符串str负向编号从-1开始,代表最后一个字符,依次往前。因为编号可正可负,所以字符串中的某个字符可以有两种方法索引,例如索引str中字符’q’,具体示例如下:
上述两种形式都可以索引到字符’q’。
字符串分片是指从字符串中截取部分字符并组成新的字符串,并不会对原字符串做任何改动,其语法格式如下:
该语句表示从起始编号处开始,以指定步长进行截取,到结束编号的前一位结束。
接下来演示字符串的切片,如例所示。
4.4 字符串的运算
除了数字类型的数据可以参与运算外,字符串也可以参与运算,如4.3节中字符串通过[]运算符进行索引与切片,具体如表所示。
接下来演示字符串的运算,如例所示。
4.5 字符串常用函数
在程序开发中,字符串经常需要被处理,例如,求字符串的长度、大小写转换等。如果每次处理字符串时,都编写相应的代码,那么开发效率会非常低下,为此Python提供了一些内置函数用于处理字符串常见的操作。
4.5.1 大小写转换
Python中涉及字符串大小写转换的函数,如表所示。
上述两种方法都返回一个新字符串,其中的非字母字符保持不变。如果需要进行大小写无关的比较,则这两个函数非常有用。接下来演示其用法,如例所示。
4.5.2 判断字符
Python中提供了判断字符串中包含某些字符的函数,这些函数在处理用户输入的字符串时是非常方便。这些函数都是以is开头,如表所示。
接下来演示这些函数的基本用法,如例所示。
在例中,这些函数的返回值都为布尔值。接下来演示使用这些函数验证用户输入的密码是否符合格式要求,如例所示。
4.5.3 检测前缀或后缀
在处理字符串时,有时需要检测字符串是否以某个前缀开头或以某个后缀结束,这时可以使用startswith()与endswith()函数,如表所示。
接下来演示这两个函数的用法,如例所示。
4.5.4 合并与分隔字符串
在处理字符串时,有时需要合并与分割字符串,这时可以使用join()与split()函数,如表所示。
接下来演示这两个函数的用法,如例所示。
4.5.5 对齐方式
在处理字符串时,有时需要设置字符串对齐方式,这时可以使用rjust()、ljust()和center()函数,如表所示。
接下来演示这3个函数的用法,如例所示。
4.5.6 删除字符串头尾字符
在处理字符串时,有时需要删除字符串头尾的某些字符,这时可以使用strip()、lstrip()和rstrip()函数,如表所示。
接下来演示这3个函数的用法,如例所示。
4.5.7 检测子串
在处理字符串时,有时需要检测某个字符串中是否包含子字符串,这时可以使用find()函数,其语法格式如下:
该函数检测str是否包含在检测字符串中。如果指定范围beg和end,则检查是否包含在指定范围内。如果包含,则返回开始的下标值,否则返回-1。
接下来演示该函数的用法,如例所示。
除此之外,还可以通过index()函数检测字串,其语法格式如下:
该函数的用法与find()函数类似,两者的区别是:如果str不在字符串中,那么index()函数会报一个异常。
接下来演示其用法,如例所示。
4.5.8 替换子串
在文字处理软件中,都会有查找并替换的功能。在字符串中,可以通过replace()函数来实现,其语法格式如下:
该函数将字符串中old替换成new并返回新生成的字符串。如果指定第三个参数max,则表示替换不超过max次。
接下来演示该函数的用法,如例所示。
4.5.9 统计子串个数
在文字处理软件中,都会有统计某个词语出现次数的功能。在字符串中,可以通过count()函数来实现,其语法格式如下:
该函数返回str在字符串中出现的次数。如果指定beg或end,则返回指定范围内str出现的次数。
接下来演示该函数的用法,如例所示。
4.5.10 首字母大写
capitalize()函数用于将字符串的第一个字母变成大写,其他字母变成小写,其语法格式如下:
接下来演示该函数的用法,如例所示。
4.5.11 标题化
title()函数可以将字符串中所有单词首字母大写,其他字母小写,从而形成标题,其语法格式如下:
接下来演示该函数的用法,如例所示。
4.6 小案例
在注册网站时,用户经常需要设置密码,然后程序根据用户输入的密码判断安全级别,具体如下所示:
低级密码——包含单纯的数字或字母,长度小于等于8。
中级密码——必须包含数字、字母或特殊字符(仅限:~!@#KaTeX parse error: Expected 'EOF', got '#' at position 65: …、字母及特殊字符(仅限:~!@#̲%^&*()_=-/,.?<>;:[]{}|\)中的3种,长度大于16。
接下来按照上述要求编写程序,如例所示。
# 字符分类,number保存数字字符,letter保存字母字符,symbols保存其他字符
number = "0123456789"
letter = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
symbols = "~!@#$%^&*()_=-/,.?<>;:[]{}|"
# 输入密码
pwd = input("请输入密码:")
# 判断长度
length = len(pwd)
# 如果输入的密码为空或空格,重新输入
while(pwd.isspace() or length == 0):
pwd = input("您输入的密码为空(或空格),请重新输入:")
#判断长度等级
if length <= 8:
lenGrade = 1
elif 8 < length < 16:
lenGrade = 2
else:
lenGrade = 3
#标记字符等级
charGrade = 0
#判断是否包含数字
for each in pwd:
if each in number:
charGrade += 1
break
#判断是否包含字母
for each in pwd:
if each in letter:
charGrade += 1
break
#判断是否包含特殊字符
for each in pwd:
if each in symbols:
charGrade += 1
break
#判断并打印结果
if lenGrade == 0 or lenGrade == 1:
print("您的密码安全级别为:低")
elif lenGrade == 2:
print("您的密码安全级别为:中")
else:
print("您的密码安全级别为:高")
本章小结
本章主要介绍了Python中的字符串,首先讲解了字符串有3种表示方法及字符串中的转义字符,接着讲解了字符串的输入与输出以便程序更好地交互,又讲解了字符串的索引与切片,最后讲解了字符串的运算及常用函数。通过本章的学习,应熟练使用字符串的切片及常用函数。