news 2026/8/17 17:08:33

Python基础6 - 字符串:(2)字符串常用操作

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python基础6 - 字符串:(2)字符串常用操作

目录

一. 拼接

二. 计算字符串长度

三. 截取字符串

(一)普通截取

(二)反向输出字符串

四. 分割、合并字符串

(一)分割字符串

(二)合并字符串

五. 检索字符串

(一)包含子字符串的个数

(二)是否包含子字符串

六. 字母大小写转换

(一)判断首字母是否大写

(二)首字母转大写

(三)全部字母转大写

(四)全部字母转小写

七. 去除空格、特殊字符

八. 格式化字符串

九. 替换子字符串


一. 拼接

"字符串1" + "字符串2"

str1 = "我今天一共走了:" num = 12098 str2 = '步' try: print(str1+num+str2) except TypeError: print("num是数值,不是字符串") print(str1+str(num)+str2) # num是数值,不是字符串 # 我今天一共走了:12098步

'字符1'.join("字符串1")

  • 在“字符串1”的每个字符之间加入“字符1”
print('*'.join("计算机二级等级考试")) # 计*算*机*二*级*等*级*考*试

二. 计算字符串长度

len(字符串名)

str1 = "人生苦短,我用Python!" print(len(str1)) # 14

三. 截取字符串

(一)普通截取

字符串名[start : end : step]

str1 = "人生苦短,我用Python!" print(str1[1])#截取第2个字符 print(str1[5:])#从第6个字符截取一直到结束 print(str1[:5])#从第1个字符截取到第5个 print(str1[2:5])#截取第3至5个字符 # 生 # 我用Python! # 人生苦短, # 苦短,

(二)反向输出字符串

字符串名[ : :-1]

str1 = "人生苦短,我用Python!" print(str1[::-1])#截取第2个字符 # !nohtyP用我,短苦生人

四. 分割、合并字符串

(一)分割字符串

字符串名.split('指定分隔符',分割次数)

  1. 指定分隔符:默认为None,即承认所有非字符(包括空格、换行符\n、制表符\t等)
  2. 分割次数:指定分割次数;若为None或-1,则分割次数无限制
  3. 若“分割次数”指定,则“指定分隔符”必须指定
  4. 若“指定分隔符”不指定,则“分割次数”也不能指定
str1= "你 有 多自信,\n世界 就有" print(str1.split())#不指定分隔符与分割次数,则将所有空格和换行符\n视为分隔符;分割次数不限 print(str1.split(' '))#将一个空格视为分隔符,\n不是;分割次数不限 print(str1.split(' ',3))#将一个空格视为分隔符,分割3次 # ['你', '有', '多自信,', '世界', '就有'] # ['你', '', '有', '多自信,\n世界', '就有'] # ['你', '', '有', '多自信,\n世界 就有']

(二)合并字符串

新字符串名 = '用于连接的符号'.join(原字符串)

lis_friend = ["巴菲特","比尔盖茨","卡尔本茨"] str_friend = '@'.join(lis_friend) print(str_friend) # 巴菲特@比尔盖茨@卡尔本茨

五. 检索字符串

(一)包含子字符串的个数

字符串名.count('要检索的内容', start, end)

LunYu = ''' 子曰:学而时习之,不亦说乎?有朋自远方来,不亦乐乎?人不知而不愠,不亦君子乎? 子曰:其为人也孝弟而好犯上者,鲜矣;不好犯上而好作乱者,未之有也。君子务本,本立而道生。孝弟也者,其为仁之本与! 子曰:巧言令色,鲜矣仁! 曾子曰:吾日三省吾身:为人谋而不忠乎?与朋友交而不信乎?传不习乎? 子曰:道千乘之国,敬事而信,节用而爱人,使民以时。 子曰:弟子入则孝,出则弟,谨而信,泛爱众,而亲仁。行有余力,则以学文。 子夏曰:贤贤易色;事父母,能竭其力;事君,能致其身;与朋友交,言而有信。虽曰未学,吾必谓之学矣。 子曰:君子不重则不威,学则不固。主忠信,无友不如己者,过则勿惮改。 曾子曰:慎终追远,民德归厚矣。 子禽问于子贡曰:夫子至于是邦也,必闻其政,求之与,抑与之与?”子贡曰:“夫子温、良、恭、俭、让以得之。夫子之求之也,其诸异乎人之求之与? 子曰:父在,观其志。父没,观其行;三年无改于父之道,可谓孝矣。''' print(LunYu.count("子曰"))#统计“子曰”出现的次数 print(LunYu.count(","))#统计逗号“,”出现的次数 # 9 # 30

(二)是否包含子字符串

字符串名.find('子字符串', start, end)

  1. 包含:返回第一次出现所在的索引值
  2. 不包含:返回-1
LunYu = ''' 子曰:学而时习之,不亦说乎?有朋自远方来,不亦乐乎?人不知而不愠,不亦君子乎? 子曰:其为人也孝弟而好犯上者,鲜矣;不好犯上而好作乱者,未之有也。君子务本,本立而道生。孝弟也者,其为仁之本与! ''' print(LunYu.find("子曰:"))#是否包含“子曰:” print(LunYu.find("父曰:"))#是否包含“父曰:” # 1 # -1

"子字符串" in 字符串

  1. 包含:True
  2. 不包含:False
LunYu = ''' 子曰:学而时习之,不亦说乎?有朋自远方来,不亦乐乎?人不知而不愠,不亦君子乎? 子曰:其为人也孝弟而好犯上者,鲜矣;不好犯上而好作乱者,未之有也。君子务本,本立而道生。孝弟也者,其为仁之本与! ''' print("子曰:" in LunYu) #是否包含“子曰:” print("父曰:" in LunYu) #是否包含“父曰:” # True # False

字符串名.index('子字符串', start, end)

  1. 包含:返回首次出现的位置索引(从左向右)
  2. 不包含:报错
LunYu = ''' 子曰:学而时习之,不亦说乎?有朋自远方来,不亦乐乎?人不知而不愠,不亦君子乎? 子曰:其为人也孝弟而好犯上者,鲜矣;不好犯上而好作乱者,未之有也。君子务本,本立而道生。孝弟也者,其为仁之本与! ''' print(LunYu.index("子曰:"))#是否包含“子曰:” try: print(LunYu.index("父曰:"))#是否包含“父曰:” except ValueError: print("字符串中不包含‘父曰:’") # 1 # 字符串中不包含‘父曰:’

字符串名.rindex('子字符串', start, end)

  1. 包含:返回首次出现的位置索引(从右向左)
  2. 不包含:报错
LunYu = ''' 子曰:学而时习之,不亦说乎?有朋自远方来,不亦乐乎?人不知而不愠,不亦君子乎? 子曰:其为人也孝弟而好犯上者,鲜矣;不好犯上而好作乱者,未之有也。君子务本,本立而道生。孝弟也者,其为仁之本与! ''' print(LunYu.rindex("子曰:"))#是否包含“子曰:” try: print(LunYu.rindex("父曰:"))#是否包含“父曰:” except ValueError: print("字符串中不包含‘父曰:’") # 54 # 字符串中不包含‘父曰:’

字符串名.startswith('子字符串', start, end)

  1. 判断字符串是否以子字符串开头
  2. 返回值:True、False
LunYu = '''子曰:学而时习之,不亦说乎?有朋自远方来,不亦乐乎?人不知而不愠,不亦君子乎? 子曰:其为人也孝弟而好犯上者,鲜矣;不好犯上而好作乱者,未之有也。君子务本,本立而道生。孝弟也者,其为仁之本与! ''' print(LunYu.startswith("子曰:"))#是否包含“子曰:” print(LunYu.startswith("父曰:"))#是否包含“父曰:” # True # False

字符串名.endswith('子字符串', start, end)

  1. 判断字符串是否以子字符串结尾
  2. 返回值:True、False
LunYu = "子曰:学而时习之,不亦说乎?有朋自远方来,不亦乐乎?人不知而不愠,不亦君子乎?" print(LunYu.endswith("!"))#是否以“!”结尾 print(LunYu.endswith("?"))#是否以“?”结尾 # False # True

六. 字母大小写转换

(一)判断首字母是否大写

字符串.istitle( )

  • 判断每个单词的首字母是否都以大写开头
str_1 = "Hello World" print(str_1.istitle()) # True

(二)首字母转大写

字符串.title( )

  • 将每个首字母都以大写开头
str_1 = "hello world" print(str_1.title()) # Hello World

(三)全部字母转大写

字符串名.upper( )

str_1 = "Hello World" print(str_1.upper()) # HELLO WORLD

(四)全部字母转小写

字符串名.lower( )

str_1 = "Hello World" print(str_1.lower()) # hello world

七. 去除空格、特殊字符

字符串名.strip('要删1', '要删2', ... ,'要删n')

  1. 字符串名.strip( ):删除左右两端空格与特殊字符,不删中间
  2. 字符串名.strip(' '):删除左右两端的空格,不删特殊字符,不删中间
  3. 字符串名.strip('\n'):删除左右两端的特殊字符,不删空格,不删中间
str_1 = " 相信 自己\n" print(str_1.strip()) print(str_1.strip(' ')) print(str_1.strip('\n')) # 相信 自己 # 相信 自己 # # 相信 自己

字符串名.lstrip('要删1', '要删2', ... ,'要删n')

  • 字符串名.lstrip( ):删除左侧空格与特殊字符
str_1 = " 相信 自己\n" print(str_1.lstrip()) print("111") # 相信 自己 # # 111

字符串名.rstrip('要删1', '要删2', ... ,'要删n')

  1. 字符串名.strip( ):删除左右两端空格与特殊字符,不删中间
  2. 字符串名.strip(' '):删除左右两端的空格,不删特殊字符,不删中间
  3. 字符串名.strip('\n'):删除左右两端的特殊字符,不删空格,不删中间
str_1 = " 相信 自己\n" print(str_1.rstrip()) print("111") # 相信 自己 # 111

八. 格式化字符串

'%[-][+][0][m][.n][格式字符]'%[exp]

-:用以指定左对齐,正数前无符号,负数前加负号

+:用以指定右对齐,正数前加正号,负数前加负号

0:表示右对齐,正数前无符号,负数前加负号,空白处用0填充

m:表示占有宽度

.n:表示小数点后保留位数

格式字符:

- %s:字符串,str()表示

- %r:字符串,表示

- %c:单个字符

- %o:八进制整数

- %d:十进制整数

- %x:十六进制整数

- %f:浮点数

- %e:指数

- %%:字符%

exp:要转换的项,多个项时用元组,不可用列表

name = ("一梦","冷毅毅","香凝","带蓝") const = ("水瓶座","射手座","双鱼座","双子座") age = (26, 24, 30, 21) template = "序号:%03d\t姓名:%s\t星座:%s\t年龄:%2d" # %03d:右对齐空白处用0填充、占有3宽度、十进制整数 # %s:字符串表示 # %2d:占有2宽度、十进制整数 for i in range(len(name)): people_list = [i,name[i], const[i], age[i]] people_tuple = tuple(people_list) print(template%people_tuple) # 序号:000 姓名:一梦 星座:水瓶座 年龄:26 # 序号:001 姓名:冷毅毅 星座:射手座 年龄:24 # 序号:002 姓名:香凝 星座:双鱼座 年龄:30 # 序号:003 姓名:带蓝 星座:双子座 年龄:21

字符串模板.format(参数1, 参数2, ... ,参数n)

字符串模板:{[1]: [2] [3] [4] [5] [6] .[7] [8]}

1. 参数所在的索引值

2. 填充字符

3. 对齐方式

- 左对齐:<

- 右对齐:>

- 居中对齐:^

4. 有无符号数

5. 是否加前缀 #(进制转换时)

6. 所占宽度

7. 保留位数

8. 指定类型

- S:字符串

- D:十进制

- C:十进制对应Unicode字符

- b:二进制

- o:八进制

- x:十六进制

- e:科学计数法

- f:浮点数

- %:百分号

print('{0:0>5s}'.format('7')) # 0:参数的索引值为0(可省略)'{:0>5s}' # 0:用0填充空白字符(可换成其他字符)'{:@>5s}' @@@@7 # >:右对齐 # 5:占5个字符宽度 # s:对字符串格式化

当占位符{ }数量多于参数时,占位符{}必须指定参数索引值

try: print("{}开{}落".format('花')) except IndexError: print("IndexError") print("{0}开{0}落".format('花')) # 花开花落

当占位符与参数数量相等且对应时,占位符{}可以不加参数索引值

print("{}曰:学而时习之,不亦{}".format("孔子","说乎")) # 孔子曰:学而时习之,不亦说乎

当占位符与参数数量相等,但位置不对应时,占位符{}必须加参数索引值

print("{1}曰:学而时习之,不亦{0}".format("说乎","孔子")) # 孔子曰:学而时习之,不亦说乎

当占位符与参数数量相等,但位置不对应时,占位符{}必须全部加参数索引值,不能只加某几个

try: print("{}曰:学而时习之,不亦{0}".format("说乎","孔子")) except ValueError : print("ValueError") print("{1}曰:学而时习之,不亦{0}".format("说乎","孔子"))
name = ("一梦","冷毅毅","香凝","带蓝") const = ("水瓶座","射手座","双鱼座","双子座") age = (26, 24, 30, 21) template = "序号:{:#>3d}\t姓名:{:s}\t星座:{:s}\t年龄:{:2d}" for i in range(len(name)): print(template.format(i+1,name[i],const[i],age[i])) # 序号:##1 姓名:一梦 星座:水瓶座 年龄:26 # 序号:##2 姓名:冷毅毅 星座:射手座 年龄:24 # 序号:##3 姓名:香凝 星座:双鱼座 年龄:30 # 序号:##4 姓名:带蓝 星座:双子座 年龄:21
print("1251+3950 的结果为(用货币形式显示):{:,.2f}¥".format(1251+3950)) # 参数的索引值为0(已省略) # ,:逗号表示千位分隔符 # .2:保留两位小数 # f:浮点数 # 1251+3950 的结果为(用货币形式显示):5,201.00¥
print("{0:.1f}用科学计数法表示:{0:e}".format(120000.1)) # 当占位符{}数量多于参数时,必须指定参数索引值。参数的索引值为0 # 0:参数的索引值为0 # .1:保留一位小数 # f:用浮点数表示 # 0:参数的索引值为0 # e:用科学计数法表示 # 120000.1用科学计数法表示:1.200001E+05
import math print("Pi取五位小数:{:.5f}".format(math.pi)) # 参数的索引值为0(已省略) # .5:保留5位小数 # f:用浮点数表示 # Pi取五位小数:3.14159
print("{0:d}的16进制表示为:{0:#x}".format(100)) # 0:当占位符{}数量多于参数时,必须指定参数索引值。参数的索引值为0 # d:十进制表示 # 0:当占位符{}数量多于参数时,必须指定参数索引值。参数的索引值为0 # #:加前缀,十六进制前缀为0x # x:十六进制表示 # 100的16进制表示为:0x64
print("{:#^20}".format("等级考试")) print("等级考试".center(20, "*")) # ########等级考试######## # ********等级考试********

九. 替换子字符串

replace("原字符或字符串", "新字符或字符串")

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/17 17:02:48

象棋AI助手免费神器:VinXiangQi让棋盘识别与引擎分析一步到位

象棋AI助手免费神器&#xff1a;VinXiangQi让棋盘识别与引擎分析一步到位 【免费下载链接】VinXiangQi Xiangqi syncing tool based on Yolov5 / 基于Yolov5的中国象棋连线工具 项目地址: https://gitcode.com/gh_mirrors/vi/VinXiangQi 在人工智能越来越普及的今天&…

作者头像 李华
网站建设 2026/8/17 16:58:35

VibeCoding:AI如何实现“审美很绝”的自动拼图?

你有没有遇到过这样的场景&#xff1a;手机相册里攒了几十张、上百张旅行照片&#xff0c;想发个朋友圈&#xff0c;却不知道该怎么排版才好看&#xff1f;九宫格太单调&#xff0c;单张又觉得不够有故事感。或者&#xff0c;团队做了一次活动&#xff0c;拍了几百张现场照片&a…

作者头像 李华
网站建设 2026/8/17 16:57:58

完全不会写开题报告,有哪些实用的AI论文写作软件推荐?

每到毕业季&#xff0c;很多同学都被开题报告卡得死死的&#xff1a;选题定不下来、研究背景和意义分不清、文献综述不知道怎么下手、研究方法和技术路线逻辑一团乱&#xff0c;盯着空白文档发愁好几天也写不出个框架。尤其是零基础、在职读研、跨专业的学生&#xff0c;根本摸…

作者头像 李华
网站建设 2026/8/17 16:57:20

Claude 4.6 拆 PDF 表格时,我的纯文本 RAG 崩了——多模态索引止血实录

Claude 4.6 拆 PDF 表格时,我的纯文本 RAG 崩了--多模态索引止血实录 多模态RAG实战:从PDF混乱到精准解析的工程突围 周五下午的灰度发布窗口,Slack 突然炸出十几条消息。市场部的季度财报分析 PDF 被 Claude 4.6 读成了科幻小说--毛利率曲线成了外星信号波形,合并单元格的财报…

作者头像 李华
网站建设 2026/8/17 16:56:09

网络安全认证指南:NISP、CISP、CISSP、CISP-PTE如何选择与备考

1. 先搞清楚这四张证到底解决什么问题&#xff0c;别盲目跟风 网络安全领域证书很多&#xff0c;但真正能帮你敲开面试大门、在项目里获得甲方信任、或者在评职称时加分的&#xff0c;其实就那几张。NISP、CISP、CISSP、CISP-PTE这四张证&#xff0c;经常被放在一起比较&#x…

作者头像 李华
网站建设 2026/8/17 16:54:35

Conan 包管理器入门:为什么选择 Conan

原文&#xff1a;Conan Documentation — Release 2.29.0 Conan 是 C 和 C 语言的依赖和包管理器。它是免费且开源的&#xff0c;适用于所有平台&#xff08;Windows、Linux、macOS、FreeBSD、Solaris 等&#xff09;&#xff0c;可用于开发包括嵌入式、移动端&#xff08;iOS、…

作者头像 李华