Python字符串(P0009)

字符串数据类型在 Python 的数据类型当中,占有举足轻重的地位。因此,学好字符串数据类型是必须的。
字符串序列用于表示和存储文本,python 中字符串是不可变对象。字符串是一个有序的字符的集合,用于存储和表示基本的文本信息,一对单,双或三引号中间包含的内容称之为字符串。其中三引号可以由多行组成,编写多行文本的快捷语法,常用文档字符串,在文件的特定地点,被当做注释。便捷的多行注释。

9.1 字符串定义方式

在 Python 中,实际上将字符串分为如下三类:

  1. 通常意义字符串

  2. 原始字符串,以 Rr 开始,不对特殊字符进行转义
    在需要在字符中使用特殊字符时,python 用反斜杠 \ 转义字符,常用的转义字符如下:

    转义字符 描述信息
    \n 表示换行符
    \t 表示制表符
    \\ 表示转义 \
    \' 表示转义 '
  3. Unicode 字符串,以 Uu 开始
    字符串是 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))
  1. 指定最小输出宽度

当使用转换说明符时,可以使用下面的格式指定最小输出宽度(至少占用多少个字符的位置):

  • %10d 表示输出的整数宽度至少为 10;
  • %20s 表示输出的字符串宽度至少为 20。

动手实验

username = '张三'
print('设置输出宽度为10')
print('%10s' % username)
telPhone = '12345678912'
print('设置输出宽度为10')
print('%10s' % telPhone)

从运行结果可以发现,当数据的实际宽度小于指定宽度时,会在左侧以空格补齐;当数据的实际宽度大于指定宽度时,会按照数据的实际宽度输出。

  1. 指定对其方式
    默认情况下,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,左对齐,不足长度右边补空格
  1. 指定小数精度
    对于小数(浮点数),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 字符串格式化训练

  1. 编写模拟某银行发送储蓄卡变动信息的输出程序,请定义三个变量name(用户姓名)、expend(支付的金额)和balance(账号余额),使用输入函数分别依次输入:关鑫琳、589.5和15279.26。最后进行输出相关结果(使用字符串格式化方式操作)。

输出结果:

尊敬的关鑫琳先生/女士,您尾号2368的储蓄卡5月23日10时23分消费支出人民币589.50元,活期余额15279.26。[工商银行]

  1. 编写模拟超市购物小票清单打印,定义四个变量分别有:可比克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() 函数格式化的使用方式有很多种,常用的方式如下:

  1. 通过位置来填充字符串

动手实验

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() 函数参数位置的改变会影响输出结果

  1. 通过关键词来填充字符串

动手实验

print('{name}: {value}'.format(name='姓名', value='张三'))
print('{name}: {value}'.format(value='张三', name='姓名'))

由上述例子的结果来看,通过关键词来填充字符串,format() 函数中参数位置的改变将不影响输出结果

  1. 通过下标索引来填充字符串(拓展)

动手实验

nameList = ['张三', '李四']  # 定义一个姓名的列表
print('hello {nameList[0]} i am {nameList[1]}'.format(nameList=nameList))
print('hello {0[0]} i am {0[1]}'.format(nameList))
  1. 通过字典的 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. 编写模拟幼儿出题生成应用,定义四个变量表示依次接收输入函数依次输入:1、2、3和4的数字。最后进行输出相关结果使用字符串格式化方式操作)。

输出结果:

请输入数字1:1
请输入数字2:2
请输入数字3:3
请输入数字4:4

>>>>>>>>>>>>>>幼儿加法运算题<<<<<<<<<<<<<<<<<<
1 + 1 = ?
1 + 2 = ?
1 + 3 = ?
1 + 4 = ?

  1. 编写模拟多方式计算结果应用,定义五个变量表示依次接收输入函数依次输入: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

  1. 编写模拟某班级合格率与不合格率打印应用,定义三个变量分别有:及格人数、不及格人数和总人数,使用输入函数依次输入:32(及格人数)和13(不合格人数),最后进行输出相关结果使用字符串格式化方式操作)。

输出结果:

请输入某班的及格人数:32
请输入某班级的不及格人数:13

>>>>>>>>>>>>>>某班级及格率和不及格率打印<<<<<<<<<<<<<<<<<<
及格率:71.11%
不及格率:28.89%

  1. 编写模拟腾讯王者荣耀游戏某位玩家使用英雄胜率打印应用,定义六个变量分别有:鲁班七号胜场次数、鲁班七号败场次数、狄仁杰胜场次数、狄仁杰败场次数、虞姬胜场次数和虞姬败场次数,使用输入函数依次输入: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 字符串运算操作训练

  1. 编写模拟计算器应用,请定义三个变量num1(第一个数字)、calculate(数学运算符)和num2(第二个数字),使用输入函数分别依次输入:10、**和3。最后进行输出相关结果(使用字符串运算操作以及eval函数应用)。

输出结果

请输入第一个数字:10
请输入数学计算符 + - * / % **等:**
请输入第二个数字:3
10 * 3 = 1000

  1. 编写一个程序,定义一个变量 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 字符串切片操作训练

  1. 编写一个程序,用于判断回文数据,例如:abc不是一个回文数据,aba 是一个回文数据。定义一个变量 str1,使用输入函数,输入需要判断的数据 aba,最后进行运算输出相关结果

输出结果

请输入一个数据:aba
aba 是一个回文数吗?True

  1. 编写一个生日提取程序,定义一个变量 str1,使用输入函数,输入待提取生日的身份证号码:513525197209210687。最后进行运算输出相关结果

输出结果

请输入一个身份证号码:513525197209210687
该身份证号码对应的生日为: 19720921

  1. 编写一个程序,实现一句话正说反说都一样。分别定义两个变量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 个,但是在实际开发中,常用的字符串函数只有那么几个,接下来将会对常用的字符串函数进行介绍。

  1. 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 出现的次数
  1. 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 不存在,弹出异常
    
  1. 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 不存在,弹出异常
  1. join 函数

join() 函数用于将序列中的元素以指定的字符连接生成一个新的字符串。

语法格式

str.join(sequence)

参数说明

  • sequence:要连接的元素序列

动手实验

# 定义一个列表
strList = ['a', 'b', 'c']
print(','.join(strList))    # 将字符串 a、b、c 按照 , 拼接
print('-'.join(strList))    # 将字符串 a、b、c 按照 , 拼接
  1. len 函数
    len() 函数用于返回字符串的长度

语法格式

len(string)

参数说明

  • string:代表字符串变量

动手实验

str1 = 'Welcome To China'   # 定义一个字符串类型的变量
print(len(str1))    # 统计 str1 字符串类型变量的长度
  1. 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))
  1. 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次
  1. 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 字符串内建函数训练

  1. 已知字符串:“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

  1. 编写模拟王者荣耀聊天窗口敏感词处理程序,请定义三个变量str1(待处理的数据),str2(敏感词),str3(符号),使用输入函数分别依次输入“王昭君,你这个垃圾中单,玩什么王者荣耀,回去喂猪算了”, “垃圾”, “**”,最后进行运算输出相关结果

输出结果

请输入待处理的语句:王昭君,你这个垃圾中单,玩什么王者荣耀,回去喂猪算了
请输入敏感词:垃圾
请输入处理符号:**
原语句为:王昭君,你这个垃圾中单,玩什么王者荣耀,回去喂猪算了
处理后的语句为:王昭君,你这个**中单,玩什么王者荣耀,回去喂猪算了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容