内容正文:
任务4.1 字符串
统计文本中各类字符数目
4.1 字符串——统计各类字符数目
【任务描述】
小T需要协助导师统计某同学提交的一篇论文中中文、英文字母和数字的个数,以及空格字数等信息,作为初步判断论文在字数、篇幅上是否达到要求的依据。由于我们还未学习Python在文件处理中的应用,因此我们将文章作为字符串处理,并进行各类字符的统计。
4.1 字符串——统计各类字符数目
任务解决:
中文字数
英文字母个数
数字个数
空格数
其他字符个数
素养小课堂:
论文常用来进行科学研究和描述科研成果,包括毕业论文、学位论文、科技论文等。
论文一般由题名、作者、目录、摘要、关键词、正文、参考文献等部分组成,需遵循《论文写作规范国家标准》(GB7713-87)。毕业论文的撰写、答辩等是大学生必须完成的课程,论文也是大学学习成果的综合应用。因此,大学期间需做好学习规划,注重技能实践和积累,注重成果的转化,以完成高质量的毕业论文。
4.1 字符串——统计各类字符数目
4.1 字符串——统计各类字符数目
【任务分析】
(1)定义字符串。
(2)遍历字符串中的每一个字符,判断该字符的类型,并在相应的计数变量上加1。
(3)输出中文字数、英文字母个数和数字个数、空格数及其他字符个数。
4.1 字符串——统计各类字符数目
4.1.1 字符的编码
4.1.2 字符串的创建
4.1.3 字符串的常用方法
4.1.4 字符串的格式化
4.1.5 字符串任务实现——统计各类字符数目
4.1.4 字符串的常用方法
4.1.4 字符串的常用方法
遍历?
切分?
英文字符串大小写转换?
字符串的查找和统计?
字符串的分隔和连接?
字符串类型判断?
......
1.字符串的索引和切片
海 上 生 明 月 , 天 涯 共 此 时 。
0 1 2 3 4 5 6 7 8 9 10 11
-12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1
正向
负向
字符串长度:len(字符串)
(1)字符串的索引。字符串是一个有序的序列,可以使用索引对其进行访问和操作。字符串的索引分为正索引和负索引。正序索引从字符串左边的0开始,依次为0,1,2,…,len(字符串)-1;字符串的负索引从字符串的末尾开始,由右向左索引,从-1开始,依次为-1,-2,…,-len(字符串)
4.1.4 字符串的常用方法
4.1.4 字符串的常用方法
(2)字符串的切片 。字符串可利用索引对自身进行切片,即根据索引范围从字符串中获得连续的若干个字符,从而得到字符子串。字符串切片的基本语法格式如下:
<字符串>[start:end:step]
三个参数中,start和end分别表示切片的起始索引值(默认值为0)和结束索引值(默认值为),遵循左闭右开原则,setp表示切片的步长,默认值为1
【例4-12】字符串切片。
s='海上生明月,天涯共此时。'
print(s[:]) # 提取从开头到结尾整个字符串
print(s[:7]) # 从头开始索引,到索引为7所在位置(不包含索引为7的字符)
print(s[1:7]) # 从索引为1到7子字符串(不包含索引为7的字符)
print(s[1:7:2]) # 从索引为1到7子字符串,步长为2(不包含索引为7的字符)
print(s[-11:-5]) # 从索引为-11到-5子字符串(不包含索引为7的字符)print(s[1:-5]) #从索引为1到-5子字符串,正向索引和反向索引可以一起使用(不包含索引为7的字符)
print(s[::-1]) #字符串反向输出
4.1.4 字符串的常用方法
海上生明月,天涯共此时。
海上生明月,天
上生明月,天
上明,
上生明月,天
上生明月,天
。时此共涯天,月明生上海
4.1.4 字符串的常用方法
4.1.4 字符串的常用方法
即学即答:
print('哪有什么岁月静好,不过是有人替你负重前行。'[4:-13])的输出结果是( )。
A.岁月静好 B.月静好,
C.有人替你 D.什么岁月
2.字符串的大小写转换
<字符串>.upper():将原字符串中的小写字母转为大写字母,返回新字符串。
<字符串>.lower():将原字符串中的大写字母转为小写字母,返回新字符串。
<字符串>.capitalize():将原字符串中第一个字母大写,其他字符小写,返回新字符串。
<字符串>.title():将原字符串中所有单词首字母大写,其余字母小写,返回新字符串。
<字符串>.swapcase():将原字符串中大小写字母进行转换,返回新字符串。
4.1.4 字符串的常用方法
【例4-13】字符串大小写转换。
WE ARE GOOD FRIENDS.
we are good friends.
We are good friends.
We Are Good Friends.
wE ARE GOOD FRIENDS.
s='We are good friends.'print(s.upper()) #将字符串s中字母转换为大写字母print(s.lower()) #将字符串s中字母转换为小写字母print(s.capitalize()) #将字符串s中第一个字母大写,其他字母小写print(s.title()) #将字符串s中所有单词首字母大写,其他字母小写print(s.swapcase()) #将字符串s中大小写字母进行转换
4.1.4 字符串的常用方法
3.字符串的查找和统计
<字符串>.find(subString):返回在字符串中查找subString子串第一次出现的位置的下标,如果不存在,则返回-1。
<字符串>.rfind(subString):返回在字符串中查找subString子串最后一次出现的位置的下标,如果不存在,则返回-1。
<字符串>.index(subString):返回在字符串中查找subString子串第一次出现的位置的下标,如果不存在,则报错。
<字符串>.rindex(subString):返回在字符串中查找subString子串最后一次出现的位置的下标,如果不存在,则报错。
<字符串>.count(subString):返回字符串中出现subString子串的次数。
4.1.4 字符串的常用方法
【例4-14】字符串的查找。
s='We are good friends.We are all friends.'
print(s.find('friends'))
print(s.find('best')) #不存在子串,返回-1
print(s.rfind('friends'))
print(s.index('friends'))
print(s.rindex('friends'))
print(s.count('friends')) #统计字符串中出现子串friends的次数
4.1.4 字符串的常用方法
12
-1
31
12
31
2
3
4.1.4 字符串的常用方法
4.1.4 字符串的常用方法
即学即答:
print('梅须逊雪三分白,雪却输梅一段香。'.find('雪'))的输出结果是( )。
A.4 B.8,
C.6 D.3
4.字符串的替换
<字符串>.replace(oldString,newString):将原字符串中oldString子串替换为newString子串,返回新的字符串。
s='We are good friends.We are all friends.'
s1=s.replace('We','You') #将原字符串中We子串替换成You子串
print(s1)
You are good friends.You are all friends.
4.1.4 字符串的常用方法
即学即答:
print('ASasdfdas'.replace('as','AS'))的输出结果是( )。
A.ASASdfdas B.ASasdfdAS
C.ASASdfdAS D.ASasdfdas
4.1.4 字符串的常用方法
5.字符串的连接
<指定字符>.join(字符串序列)
seq=('C:','Program Files','WinRAR','Uninstall.exe')
newString='/'.join(seq) #用/连接字符串
print(newString)
C:/Program Files/WinRAR/Uninstall.exe
4.1.4 字符串的常用方法
6.字符串的分隔/分割
<字符串>.split(分隔字符或字符串)
s='We are good friends.We are all friends.'
s1=s.split() #默认用空格分隔
print(s1)
s2=s.split('are') #用字符串are做分隔
print(s2)
把字符串s中所有单词分割出来,怎么做?
['We', 'are', 'good', 'friends.We', 'are', 'all', 'friends.']
['We ', ' good friends.We ', ' all friends.']
4.1.4 字符串的常用方法
7.字符串类型判断
<字符串>.isalnum():当字符串全部为字母和数字组成时,返回True,否则返回False。
<字符串>.isalpha():当字符串全部为字母(包括各国文字)组成时,返回True,否则返回False。
<字符串>.isdigit():当字符串全部由数字组成是,返回True,否则返回False。
<字符串>.isupper():当字符串中包含的字母都是大写字母时,返回True,否则返回False。
<字符串>.islower():当字符串中包含的字母都是小写字母时,返回True,否则返回False。
4.1.4 字符串的常用方法
s1='abc123'
s2='abc#123'
s3='China中国'
s4='China中国!'
s5='123'
print(s1.isalnum())
print(s2.isalnum())
print(s3.isalpha())
print(s4.isalpha())
print(s5.isdigit())
True
False
True
False
True
4.1.4 字符串的常用方法
边学边练:
定义一个字符串(包含数字、字母及其他字符)和字符,
s='Friut is sweet.' substring=‘is'
按要求完成以下功能并输出:
(1)该子串在字符串中第一次出现的位置。
(2)该子串在字符串中出现的次数。
(3)将字符串按子串分割。
(4)该字符串是否全部为字母。
4.1.4 字符串的常用方法
4.1.5 字符串任务实现——统计各类字符数目
4.1.5 字符串任务实现——统计各类字符数目
【任务描述】
小T协助导师统计某篇文章中的中文字数、英文字母个数、数字个数、空格数,以及其他字符个数等信息,作为初步判断论文在字数、篇幅上有没有达到要求。由于我们还未学习Python在文件处理中的应用,因此选择一个段落作为该任务的示范字符串进行各类字符的统计。
4.1.5 字符串任务实现——统计各类字符数目
【任务分析】
根据经验,我们可以用Python中字符串的相关知识解决改任务,涉及到定义字符串、遍历字符串、判定字符类型等知识(注意:汉字 Unicode 编码范围在'\u4e00' 和'\u9fa5'之间,即对于字符s,若语句s>= '\u4e00' and s<= '\u9fa5'返回值为真,则判定为汉字)。
(1)定义字符串。
(2)遍历字符串中的每一个字符,判断该字符的类型,并在相应的计数变量上加1。
(3)输出中文字数、英文字母个数、数字个数、空格个数及其他字符个数。
4.1.5 字符串任务实现——统计各类字符数目
将文本定义成字符串
输出各类字符个数
判断字符的类型
字符串遍历结束
在相应的计数变量上加1
Y
N
(1)定义字符串
(3)遍历字符串中每一个字符,判断该字符的类型,并在相应的计数变量上加1
(4)输出中文字数、英文字母个数和数字个数、空格个数及其他字符个数。
初始化各类字符的计数变量
(2)初始化各类字符计数变量为0
4.1.5 字符串任务实现——统计各类字符数目
strArticle='''现代企业生产经营离不开信息技术,特别是基于企业流程再造与企业信息管理的ERP系统在企业管理中的运用。ERP(Enterprise Resource Planning)即企业资源计划,它在实现企业的物流、信息流和资金流的集成,提高企业资源配置效率[1],提升企业管理水平,提高企业经济效益和企业核心竞争力[2]着重要作用。''‘
(1)定义字符串
【例4-20】统计各类字符数目。
4.1.5 字符串任务实现——统计各类字符数目
intChinese=0 # 中文字符
intNumber =0 # 数字
intLetter = 0 # 英文字符
intSpace = 0 # 空格
intOther = 0 # 其他字符
(2)初始化各类字符计数变量为0
4.1.5 字符串任务实现——统计各类字符数目
for i in range(len(strArticle)):
if strArticle[i]>= '\u4e00' and strArticle[i]<= '\u9fa5':#判断中文
intChinese+=1
elif strArticle[i].isdigit(): # 判断数字
intNumber +=1
elif strArticle[i].isspace(): # 判断空格
intSpace+=1
elif strArticle[i].isalpha(): # 判断英文字母
intLetter+=1
else
intOther+=1#其他字符
(3)遍历字符串中每一个字符,判断该字符的类型,并在相应的计数变量上加1
4.1.5 字符串任务实现——统计各类字符数目
print("中文字数:{}个;
英文字符数:{}个;
数字个数:{}个;
空格个数:{}个;
其他字符个数:{}个".format(intChinese,intLetter,intNumber,intSpace,intOther))
(4)输出中文字数、英文字母个数和数字个数、空格个数及其他字符个数。
中文字数:110 个;
英文字符数:32 个;
数字个数:2 个;
空格数:2 个;
其他字符个数:14 个。
$$