字符串数据类型在 Python 的数据类型当中,占有举足轻重的地位。因此,学好字符串数据类型是必须的。
字符串序列用于表示和存储文本,python 中字符串是不可变对象。字符串是一个有序的字符的集合,用于存储和表示基本的文本信息,一对单,双或三引号中间包含的内容称之为字符串。其中三引号可以由多行组成,编写多行文本的快捷语法,常用文档字符串,在文件的特定地点,被当做注释。便捷的多行注释。
9.1 字符串定义方式
在 Python 中,实际上将字符串分为如下三类:
通常意义字符串
-
原始字符串,以
R
或r
开始,不对特殊字符进行转义
在需要在字符中使用特殊字符时,python 用反斜杠\
转义字符,常用的转义字符如下:转义字符 描述信息 \n 表示换行符 \t 表示制表符 \\ 表示转义 \
\' 表示转义 '
Unicode 字符串,以
U
或u
开始
字符串是 Python 中最常用的数据类型。我们可以使用引号( ' 、" 、 ''' 或 """)来创建字符串,但是在实际的开发中,建议使用"
创建字符串。
动手实验
# 定义一个人的姓名变量
username = '张三'
# 定义一个人的昵称
nickname = '情深意切'
# 定义一个变量存储古诗
ancientPoetry = '''
登高
【作者】杜甫 【朝代】唐
风急天高猿啸哀,渚清沙白鸟飞回。
无边落木萧萧下,不尽长江滚滚来。
万里悲秋常作客,百年多病独登台。
艰难苦恨繁霜鬓,潦倒新停浊酒杯。
'''
# 分别打印出所有的变量
print(type(username), username)
print(type(nickname), nickname)
print(type(ancientPoetry), ancientPoetry)
9.2 字符串格式化
在 Python 中,有一个独特的内建操作可以使用 %
操作符来操作字符串。它可以让你很轻松的做基于位置的字符串格式化。
print()
函数使用以 %
开头的转换说明符对各种类型的数据进行格式化输出,实际上转换说明符只是一个占位符,它会被后面表达式(变量、常量、数字、字符串、加减乘除等各种形式)的值代替,常用的转换说明符如下:
转换说明符 | 描述信息 |
---|---|
%d | 转换为带符号的十进制整数 |
%e | 转换为科学计数法表示的浮点数 |
%f | 转换为十进制浮点数 |
%s | 使用 str() 函数将表达式转换为字符串 |
%r | 使用 repr() 函数将表达式转换为字符串 |
动手实验
grade = 2020
print('%d 级的同学们现在已经成为学长和学姐了,要做好榜样哦!' % grade)
格式化字符串中除了包含一个转换说明符以外,也可以包含多个转换说明符,这个时候也得提供多个表达式,用以替换对应的转换说明符;多个表达式必须使用小括号( )
包围起来。
动手实验
username = '张三'
userAge = 18
print('姓名:%s\n年龄:%d' % (username, userAge))
- 指定最小输出宽度
当使用转换说明符时,可以使用下面的格式指定最小输出宽度(至少占用多少个字符的位置):
-
%10d
表示输出的整数宽度至少为 10; -
%20s
表示输出的字符串宽度至少为 20。
动手实验
username = '张三'
print('设置输出宽度为10')
print('%10s' % username)
telPhone = '12345678912'
print('设置输出宽度为10')
print('%10s' % telPhone)
从运行结果可以发现,当数据的实际宽度小于指定宽度时,会在左侧以空格补齐;当数据的实际宽度大于指定宽度时,会按照数据的实际宽度输出。
-
指定对其方式
默认情况下,print()
输出的数据总是右对齐的。也就是说,当数据不够宽时,数据总是靠右边输出,而在左边补充空格以达到指定的宽度。Python 允许在最小宽度之前增加一个标志来改变对齐方式,Python 支持的标志如下:
标志 | 说明 |
---|---|
- | 指定对齐方式为左对齐 |
+ | 表示输出的数字总要带着符号;正数带 + ,负数带 -
|
0 | 表示数据宽度不足时补充0,而不是补充空格 |
% | 输出单一的 %
|
说明:
- 对于整数,指定左对齐时,在右边补 0 是没有效果的,因为这样会改变整数的值。
- 对于小数,以上三个标志可以同时存在。
- 对于字符串,只能使用
-
标志,因为符号对于字符串没有意义,而补 0 会改变字符串的值。
动手实验
num = 123456
print('%09d' % num) # %09d 表示最小宽度为9,左边补0
print('%+9d' % num) # %+9d 表示最小宽度为9,带上符号
float1 = 140.5
print('%-+010f' % float1) # %-+010f 表示最小宽度为10,左对齐,带上符号,不足长度右边补0
str1 = 'Hello'
print('%-10s' % str1) # %-10s 表示最小宽度为10,左对齐,不足长度右边补空格
-
指定小数精度
对于小数(浮点数),print()
还允许指定小数点后的数字位数,也即指定小数的输出精度。
精度值需要放在最小宽度之后,中间用点号.
隔开;也可以不写最小宽度,只写精度。具体格式如下:
%m.nf # 格式一
%.nf # 格式二
其中 m 表示最小宽度,n 表示输出精度,.
是必须存在的
动手实验
f = 3.141592653
# 最小宽度为8,小数点后保留3位
print('%8.3f' % f)
# 最小宽度为8,小数点后保留3位,左边补0
print('%08.3f' % f)
# 最小宽度为8,小数点后保留3位,左边补0,带符号
print('%+08.3f' % f)
9.3 字符串格式化训练
- 编写模拟某银行发送储蓄卡变动信息的输出程序,请定义三个变量name(用户姓名)、expend(支付的金额)和balance(账号余额),使用输入函数分别依次输入:关鑫琳、589.5和15279.26。最后进行输出相关结果(使用字符串格式化方式操作)。
输出结果:
尊敬的关鑫琳先生/女士,您尾号2368的储蓄卡5月23日10时23分消费支出人民币589.50元,活期余额15279.26。[工商银行]
- 编写模拟超市购物小票清单打印,定义四个变量分别有:可比克105g灌装爽口青瓜味薯片购买数量、可比克105g灌装爽口青瓜味薯片购买单价、每日坚果750g混合坚果30包干果仁小包装购买数量和每日坚果750g混合坚果30包干果仁小包装购买单价,使用输入函数分别依次输入:3、6.65、2、68。最后进行输出相关结果使用字符串格式化方式操作)。
输出结果:
请输入可比克105g灌装爽口青瓜味薯片购买数量:3
请输入可比克105g灌装爽口青瓜味薯片购买单价:6.65
请输入每日坚果750g混合坚果30包干果仁小包装购买数量:2
请输入每日坚果750g混合坚果30包干果仁小包装购买单价:68
>>>>>>>>>>>>>>
购物清单<<<<<<<<<<<<<<<<<<
生活购物超市
可比克105g灌装爽口青瓜味薯片 * 3 ¥19.95
每日坚果750g混合坚果30包干果仁小包装 * 2 ¥136.00
合计金额:¥155.95
9.4 format 函数格式化
虽然使用 %
可以对字符串进行格式化,但是这种方式并不是很直观,一旦开发人员遗漏了替换数据或选择了不匹配的格式符,就会导致字符串格式化失败。为了更直观、便捷地格式化字符串,Python
为字符串提供了一个格式化方法 format()
。
format()是 python2.6
新增的一个格式化字符串的方法,功能非常强大,有可能在未来完全替代 %
格式化方法,相比 %
,format()
的优点有:
- 格式化时不用关心数据类型的问题,
format()
会自动转换,而在%
方法中,%s
用来格式化字符串类型,%d
用来格式化整型; - 单个参数可以多次输出,参数顺序可以不同;
- 填充方式灵活,对齐方式强大。
语法格式
string.format(value1, value2...)
在实际的开发过程中,format()
函数格式化的使用方式有很多种,常用的方式如下:
- 通过位置来填充字符串
动手实验
print('{}, {}, {}'.format('a', 'b', 'c'))
print('{0}, {1}, {2}'.format('a', 'b', 'c'))
print('{0}, {1}, {2}'.format('c', 'a', 'b'))
print('{2}, {1}, {0}'.format('a', 'b', 'c'))
print('{1}, {0}, {1}'.format('a', 'b'))
由上述例子的结果来看,占位符 {}
里面的数字省略,则默认按照 0,1,... 顺序匹配,并且 format()
函数参数位置的改变会影响输出结果
- 通过关键词来填充字符串
动手实验
print('{name}: {value}'.format(name='姓名', value='张三'))
print('{name}: {value}'.format(value='张三', name='姓名'))
由上述例子的结果来看,通过关键词来填充字符串,format()
函数中参数位置的改变将不影响输出结果
- 通过下标索引来填充字符串(拓展)
动手实验
nameList = ['张三', '李四'] # 定义一个姓名的列表
print('hello {nameList[0]} i am {nameList[1]}'.format(nameList=nameList))
print('hello {0[0]} i am {0[1]}'.format(nameList))
- 通过字典的 key 来填充字符串(拓展)
动手实验
nameDict = {'name': '张三', 'age': 20} # 定义一个张三的字典
print('我的名字叫 {nameDict[name]},年龄 {nameDict[age]} 岁'.format(nameDict=nameDict))
print('我的名字叫 {0[name]},年龄 {0[age]} 岁'.format(nameDict))
在实际开发过程中,按照指定样式或格式输出也是非常有必要的,{}
中输入的信息可以控制输出字符串的样式,Python 中称之为 格式控制信息,样式如下:
{<参数序号>: <格式控制标记>}
其中,<格式控制标记>用来控制参数显示时的格式,包括:<填充><对齐><宽度>,<.精度><类型>6 个字段,这些字段都是可选的,可以组合使用,逐一介绍如下
- <宽度>:指当前占位符的设定输出字符宽度,如果该占位符对应的format()参数长度比 <宽度> 设定值大,则使用参数实际长度。如果该值的实际位数小于指定宽度,则位数将被默认以空格字符补充
动手实验
name = '乌卡拉卡'
age = 20
print('.{:6}.'.format(name))
print('姓名为{:2}, 年龄为{:4}。'.format(name, age))
- <对齐>:指参数在 <宽度> 内输出时的对齐方式,分别使用
<
、>
和^
三个符号表示左对齐、右对齐和居中对齐
动手实验
name = '乌卡拉卡'
print('{0:^16}'.format(name)) # 居中对齐
print('{0:<16}'.format(name)) # 左对齐
print('{0:>16}'.format(name)) # 右对齐
- <填充>:指 <宽度> 内除了参数外的字符采用什么方式表示,默认采用空格,可以通过 <填充> 更换,该参数建议与 <对齐> 参数一起使用
动手实验
name = '乌卡拉卡'
print('{0:*^16}'.format(name)) # 居中对齐并填充 *
print('{0:*<16}'.format(name)) # 左对齐并填充 *
print('{0:*>16}'.format(name)) # 右对齐并填充 *
-
,
:<格式控制标记> 中的英文,
用于显示数字的千位分隔符
动手实验
totalPrice = 1234567
print('商品的价格为:{0:,}'.format(totalPrice))
- <.精度>:表示两个含义,由小数点开头。对于浮点数,精度表示小数部分输出的有效位数。对于字符串,精度表示输出的最大长度
动手实验
totalPrice = 1234.5678
print('商品的价格为:{0:.2f}'.format(totalPrice))
print('{0:.4}'.format(name))
-
<类型>:表示输出整数和浮点数类型的格式规则
-
d
:输出整数的十进制方式 -
e
:输出浮点数对应的小写字母 e 的指数形式 -
E
:输出浮点数对应的小写字母 E 的指数形式 -
f
:输出浮点数的标准浮点形式 -
%
:输出浮点数的百分形式
-
动手实验
totalPrice = 1234.5678
print('商品的价格为:{0:.2f}'.format(totalPrice))
print('商品的价格为:{0:.2%}'.format(totalPrice))
print('商品的价格为:{0:.2e}'.format(totalPrice))
print('商品的价格为:{0:.2E}'.format(totalPrice))
9.5 format函数训练
- 编写模拟幼儿出题生成应用,定义四个变量表示依次接收输入函数依次输入:1、2、3和4的数字。最后进行输出相关结果使用字符串格式化方式操作)。
输出结果:
请输入数字1:1
请输入数字2:2
请输入数字3:3
请输入数字4:4
>>>>>>>>>>>>>>
幼儿加法运算题<<<<<<<<<<<<<<<<<<
1 + 1 = ?
1 + 2 = ?
1 + 3 = ?
1 + 4 = ?
- 编写模拟多方式计算结果应用,定义五个变量表示依次接收输入函数依次输入:1、2、3、4和5的数字。最后进行输出相关结果使用字符串格式化方式操作)。
输出结果:
请输入数字1:1
请输入数字2:2
请输入数字3:3
请输入数字4:4
请输入数字5:5
>>>>>>>>>>>>>>
1-5的数相加结果为7的方案有哪些<<<<<<<<<<<<<<<<<<
1 + 2 + 4
2 + 5
3 + 4
- 编写模拟某班级合格率与不合格率打印应用,定义三个变量分别有:及格人数、不及格人数和总人数,使用输入函数依次输入:32(及格人数)和13(不合格人数),最后进行输出相关结果使用字符串格式化方式操作)。
输出结果:
请输入某班的及格人数:32
请输入某班级的不及格人数:13
>>>>>>>>>>>>>>
某班级及格率和不及格率打印<<<<<<<<<<<<<<<<<<
及格率:71.11%
不及格率:28.89%
- 编写模拟腾讯王者荣耀游戏某位玩家使用英雄胜率打印应用,定义六个变量分别有:鲁班七号胜场次数、鲁班七号败场次数、狄仁杰胜场次数、狄仁杰败场次数、虞姬胜场次数和虞姬败场次数,使用输入函数依次输入:455、738、568、472、566和554,最后进行输出相关结果使用字符串格式化方式操作)。
输出结果:
请输入鲁班七号胜场次数:455
请输入鲁班七号败场次数:738
请输入狄仁杰胜场次数:568
请输入狄仁杰败场次数:472
请输入虞姬胜场次数:566
请输入虞姬败场次数:554
>>>>>>>>>>>>>>
王者荣耀玩家使用英雄胜率打印<<<<<<<<<<<<<<<<<<
鲁班七号胜率:38.14%
狄仁杰胜率:54.62%
虞姬胜率:50.54%
9.6 字符串运算
在实际的 Python 开发中,除了字符串格式化使用的比较多以外,字符串的运算也会经常使用。我们都见过数字的运算,其实字符串的运算也不复杂。跟数字一样,字符串也可以进行加法运算以及乘法运算。需要注意的是字符串的加法运算的参数必须是字符串类型,字符串乘法运算中的其中一个参数必须是整数。
动手实验
# 字符串加法运算
print('hello' + ' ' + 'world')
# 字符串乘法运算
print('hello' * 4)
由上述示例的结果可以得知,字符串的加法运算实质上就是将两个字符串拼接起来,组成一个新的字符串。字符串的乘法运算实质上就是将字符串重复多少次。
9.7 字符串运算操作训练
- 编写模拟计算器应用,请定义三个变量num1(第一个数字)、calculate(数学运算符)和num2(第二个数字),使用输入函数分别依次输入:10、**和3。最后进行输出相关结果(使用字符串运算操作以及eval函数应用)。
输出结果
请输入第一个数字:10
请输入数学计算符 + - * / % **等:**
请输入第二个数字:3
10 * 3 = 1000
- 编写一个程序,定义一个变量 str1,里面存储的数据为 “你是猴子派来的救兵吗?”,使用输入函数,输入打印次数 4 次,最后进行运算输出相关结果
输出结果
请输入要打印的次数:4
你是猴子派来的救兵吗?
你是猴子派来的救兵吗?
你是猴子派来的救兵吗?
你是猴子派来的救兵吗?
9.8 字符串切片
Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。Python 访问子字符串,可以使用方括号 []
来截取字符串,俗称 字符串切片
。字符串切片的语法如下:
变量[头下标:尾下标:步长]
注意:索引值以 0
为开始值,-1
为从末尾的开始位置,且尾下标的值是截取不到的。
动手实验
str1 = 'Google'
print(str1[1]) # 获取索引为 1 的字符
print(str1[-1]) # 获取字符串中最后一个字符
print(str1[:2]) # 从前往后取字符2个字符
print(str1[1:3]) # 从索引为1的位置开始取2个字符
print(str1[:]) # 截取全部字符
print(str1[:-2]) # 获取字符,不包含最后2个字符
print(str1[1::2]) # 获取索引为奇数的字符
print(str1[::-1]) # 将字符串倒序
9.9 字符串切片操作训练
- 编写一个程序,用于判断回文数据,例如:abc不是一个回文数据,aba 是一个回文数据。定义一个变量 str1,使用输入函数,输入需要判断的数据 aba,最后进行运算输出相关结果
输出结果
请输入一个数据:aba
aba 是一个回文数吗?True
- 编写一个生日提取程序,定义一个变量 str1,使用输入函数,输入待提取生日的身份证号码:513525197209210687。最后进行运算输出相关结果
输出结果
请输入一个身份证号码:513525197209210687
该身份证号码对应的生日为: 19720921
- 编写一个程序,实现一句话正说反说都一样。分别定义两个变量str1,str2,使用输入函数分别输入数据为:“上海自来” 和 “水”。最后进行运算输出相关结果
输出结果
请输入一句正说倒说一样的话:上海自来
请输入语句连接词:水
字符串正序和倒序拼接后的结果为:上海自来水来自海上
9.10 字符串常用函数
在 Python 编程语言中,存放了许多与字符串处理相关的内置函数,这些字符串函数能够快速帮助我们提取或处理我们想要的字符串,内置的字符串函数如下:
函数名称 | 函数的作用 |
---|---|
capitalize() | 将字符串的第一个字符转换为大写 |
center(width, fillchar) | 返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格 |
count(str, beg= 0,end=len(string)) | 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数 |
bytes.decode(encoding="utf-8", errors="strict") | Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回。 |
encode(encoding='UTF-8',errors='strict') | 以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是'ignore'或者'replace' |
endswith(suffix, beg=0, end=len(string)) | 检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False |
expandtabs(tabsize=8) | 把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 |
find(str, beg=0, end=len(string)) | 检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1 |
index(str, beg=0, end=len(string)) | 跟find()方法一样,只不过如果str不在字符串中会报一个异常 |
isalnum() | 如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False |
isalpha() | 如果字符串至少有一个字符并且所有字符都是字母或中文字则返回 True, 否则返回 False |
isdigit() | 如果字符串只包含数字则返回 True 否则返回 False |
islower() | 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False |
isnumeric() | 如果字符串中只包含数字字符,则返回 True,否则返回 False |
isspace() | 如果字符串中只包含空白,则返回 True,否则返回 False |
istitle() | 如果字符串是标题化的(见 title())则返回 True,否则返回 False |
isupper() | 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False |
join(seq) | 以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
len(string) | 返回字符串长度 |
ljust(width[, fillchar]) | 返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。 |
lower() | 转换字符串中所有大写字符为小写 |
lstrip() | 截掉字符串左边的空格或指定字符 |
maketrans() | 创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。 |
max(str) | 返回字符串 str 中最大的字母 |
min(str) | 返回字符串 str 中最小的字母 |
replace(old, new [, max]) | 把将字符串中的 old 替换成 new,如果 max 指定,则替换不超过 max 次 |
rfind(str, beg=0,end=len(string)) | 类似于 find()函数,不过是从右边开始查找 |
rindex( str, beg=0, end=len(string)) | 类似于 index(),不过是从右边开始 |
rjust(width,[, fillchar]) | 返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串 |
rstrip() | 删除字符串末尾的空格或指定字符 |
split(str="", num=string.count(str)) | 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num+1 个子字符串 |
splitlines([keepends]) | 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符 |
startswith(substr, beg=0,end=len(string)) | 检查字符串是否是以指定子字符串 substr 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查 |
strip([chars]) | 在字符串上执行 lstrip()和 rstrip() |
swapcase() | 将字符串中大写转换为小写,小写转换为大写 |
title() | 返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写 |
translate(table, deletechars="") | 根据 str 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中 |
upper() | 转换字符串中的小写字母为大写 |
zfill (width) | 返回长度为 width 的字符串,原字符串右对齐,前面填充0 |
isdecimal() | 检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false |
由上列表明确在 Python 内置中有 40 个,但是在实际开发中,常用的字符串函数只有那么几个,接下来将会对常用的字符串函数进行介绍。
-
count 函数
count()
函数用于统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。
语法格式
str.count(sub[, start= 0,end=len(str)])
参数说明
-
sub
:表示需要搜索的字符串 -
start
:可选参数,表示字符串开始搜索的位置。默认为第一个字符,即索引值为 0 -
end
:可选参数,表示字符串结束搜索的位置。默认为为最后一个字符的位置
动手实验
str1 = 'Welcome To China' # 定义一个字符串类型的变量
print(str1.count("o")) # 统计字符 o 在字符串中出现的次数
print(str1.count("o", 5)) # 从索引为 5 的位置开始统计字符 o 出现的次数
print(str1.count("o", 3, 6)) # 统计索引为 3-6 区间内字符 o 出现的次数
- index 函数
index() 函数检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,若检测的字符串中不包含子字符串,则会返回一个异常
语法格式
str.index(sub, beg=0, end=len(str))
参数说明
sub
:表示需要检索的字符串beg
:可选参数,表示开始的索引,默认为 0-
end
:可选参数,表示结束的索引,默认为字符串的长度动手实验
str1 = 'Welcome To China' # 定义一个字符串类型的变量 print(str1.index('m')) # 检索字符串 m 在字符串中的索引 print(str1.index('m', 1, -1)) # 从索引为 1 至 -1 区间,检索字符串 m 在字符串中的索引 print(str1.index('s')) # 检索字符串 s 在字符串中的索引,字符串 s 不存在,弹出异常
- rindex 函数
rindex()
返回子字符串 str 在字符串中最后出现的位置,如果没有匹配的字符串会报异常,你可以指定可选参数 [beg:end]
设置查找的区间
语法格式
str.rindex(str, beg=0 end=len(str))
参数说明
-
sub
:表示需要检索的字符串 -
beg
:可选参数,表示开始的索引,默认为 0 -
end
:可选参数,表示结束的索引,默认为字符串的长度
动手实验
str1 = 'Welcome To China' # 定义一个字符串类型的变量
print(str1.rindex('m')) # 检索字符串 m 在字符串中最后出现的索引
print(str1.rindex('m', 1, -1)) # 从索引为 1 至 -1 区间,检索字符串 m 在字符串中最后出现的索引
print(str1.rindex('s')) # 检索字符串 s 在字符串中最后出现的索引,字符串 s 不存在,弹出异常
- join 函数
join()
函数用于将序列中的元素以指定的字符连接生成一个新的字符串。
语法格式
str.join(sequence)
参数说明
-
sequence
:要连接的元素序列
动手实验
# 定义一个列表
strList = ['a', 'b', 'c']
print(','.join(strList)) # 将字符串 a、b、c 按照 , 拼接
print('-'.join(strList)) # 将字符串 a、b、c 按照 , 拼接
-
len 函数
len()
函数用于返回字符串的长度
语法格式
len(string)
参数说明
-
string
:代表字符串变量
动手实验
str1 = 'Welcome To China' # 定义一个字符串类型的变量
print(len(str1)) # 统计 str1 字符串类型变量的长度
- replace 函数
replace()
函数把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数 max,则替换不超过 max 次
语法格式
str.replace(old, new[, max])
参数说明
-
old
:将要被替换的子字符串,必填参数 -
new
:新字符串,用于替换 old 子字符串 -
max
:可选参数,代表替换最大的次数
动手实验
str1 = 'hello world'
# 将字符 l 替换为 L
print(str1.replace('l', 'L'))
# 将字符 l 替换为 L,最多替换2次
print(str1.replace('l', 'L', 2))
- split 函数
split()
函数通过指定分隔符对字符串进行分割,可以指定分割的次数。返回一个列表对象
语法格式
str.split(sep, maxsplit)
参数说明
-
sep
:分隔符,默认为所有的空字符,包括空格、换行、制表符 -
maxsplit
:分割次数,默认为-1
,即分割所有
动手实验
str1 = 'hello world \n China' # 定义一个字符串
print(str1.split()) # 使用默认分隔符进行切割
print(str1.split('\n')) # 使用换行符进行切割
print(str1.split('o', 2)) # 使用字符 o 进行切割,最大次数为2次
- strip 函数
strip()
函数用于移除字符串头尾指定的字符,默认为空格或换行符。不能删除开头或结尾的字符,不能删除中间部分的字符。
语法格式
str.strip([chars])
参数说明
-
chars
:移除字符串头尾指定的字符序列
动手实验
str1 = 'hello world '
str2 = ' hello world \n'
print(str1.strip()) # 去除字符串变量 str1 左右两边的空格
print(str2.strip()) # 去除字符串变量 str2 左右两边的空格
print(str1.strip('h')) # 去除字符串变量 str1 左右两边的字符串 h
9.11 字符串内建函数训练
-
已知字符串:“this is a test of python”,请编写程序按照要求执行以下操作:
a. 统计该字符串中字母 s 出现的次数
b. 使用空格切分数据并按
,
拼接c. 将里面的 python 字符串替换为 Python
d. 查看字母 o 最后出现在该字符串中的位置
最后进行运算输出相关结果
输出结果
字母s在该字符串中出现的次数为: 3
使用空格切分数据并按,拼接的数据为: this,is,a,test,of,python
将该字符串中python替换为Python后的结果为: this is a test of Python
字母o在该字符串中最后一次出现的位置为: 22
- 编写模拟王者荣耀聊天窗口敏感词处理程序,请定义三个变量str1(待处理的数据),str2(敏感词),str3(符号),使用输入函数分别依次输入“王昭君,你这个垃圾中单,玩什么王者荣耀,回去喂猪算了”, “垃圾”, “**”,最后进行运算输出相关结果
输出结果
请输入待处理的语句:王昭君,你这个垃圾中单,玩什么王者荣耀,回去喂猪算了
请输入敏感词:垃圾
请输入处理符号:**
原语句为:王昭君,你这个垃圾中单,玩什么王者荣耀,回去喂猪算了
处理后的语句为:王昭君,你这个**中单,玩什么王者荣耀,回去喂猪算了