「Python编程基础」第7章:字符串操作

在这里插入图片描述

文章目录

  • 一、回顾
  • 二、新手容易踩坑的引号
  • 三、转义字符
  • 四、多行字符串写法
  • 五、注释
  • 六、字符串索引和切片
  • 七、字符串的in 和 not in
  • 八、字符串拼接
  • 九、转换大小写
  • 十、合并字符串join()
  • 十一、分割字符串split()
  • 十二、字符串替换 replace()
  • 十三、字符串内容判断方法
  • 十四、字符串内容统计方法
  • 十五、字符串是否包含某个子串
  • 练习题-领导找我,我不在工位该怎么办?

一、回顾

我们在第2章节《小试牛刀》已经了解过关于字符串的一些简单操作,比如如果用+号拼接字符串,字符串作为日常程序最常见的数据形式,当然不仅仅这一点点操作和知识,Python为我们提供了更为丰富的操作。

如果你是一个经常需要处理繁琐文本格式的办公人员,本章节内容能够让你将这些工作自动化处理。

  • 比如提取字符串中部分内容。

  • 添加和删除不需要的字符,比如空白字符。

  • 转换字母大小写。

  • 检查字符串格式。

二、新手容易踩坑的引号

第2章节,我们学过以下写法。

print('This is a book.')

如果简写下这句英语,你会发现一个错误信息。

print('This's a book.')
"""代码运行结果:File "E:\code\learning_python_basis\Lesson_code_7\新手容易踩坑的引号.py", line 2print('This's a book.')^
SyntaxError: unterminated string literal (detected at line 2)
"""

原因就是由于Python认为在第1个引号之后,这个字符串就结束了,所以之后的内容不符合规范,会报错,那该怎么写呢?

print("This's a book.")

这样写,就不会报错,所以之前老师傅在写字符串的时候,都习惯使用 双引号

三、转义字符

什么叫做转义字符?

你可以这样理解,就是需要转换这个字符的含义所使用到的字符“\”,如果你还不明白,看接下来的这个代码。

print('This\'s a book.')

我们发现,在刚才逗号之前,加上转义字符“\”,就不会报错,因为转义字符将原本表示字符串的单引号,转移成普通的文本字符。

常用的转义字符,我列举一些,当然还有其他的转义字符内容,大家需要什么可以百度。

转义字符描述
\’单引号
\‘’双引号
\t制表符
\n换行符
\\倒斜杠
# 换行符 \n
print("第1行:测试划水老师傅。\n第2行:天天在摸鱼!")
# 制表符 \t (tab)
print("第1行:测试划水老师傅。\t第2行:天天在摸鱼!")
# \\ "\"字符
print("第1行:测试划水老师傅。\\第2行:天天在摸鱼!")
# \'字符 单引号
print("第1行:测试划水老师傅。\'第2行:天天在摸鱼!")
#\t:制表符,一个tab键(4个空格)的距离
print("A\tB\tC\tD\tE\tF\tG")
print("Hello",end="\t")#结束符
print("World")

四、多行字符串写法

之前我们的字符串都是一行一行的,那如果是一篇文章该怎么办?

比如,我们要复制一段网页文章。

print("人民网里约热内卢12月4日电 (记者时元皓)圣保罗州立大学孔子学院日前举办以“让光影编织文化纽带”为主题的第八届圣保罗中国电影展深度对话系列活动,包括影片主创访谈、巴西媒体专访和线上圆桌论坛,旨在让巴西民众更深入了解影展播放的影片,进一步了解中国文化。系列活动共吸引近5000人关注。影片主创访谈中,参展影片的主创人员既从宏观层面分析了中国电影在“走出去”的过程中,如何平衡“中国本土文化”和“国际需求”、满足跨文化交流的需要;又从微观层面,分析了影片的创作思路和呈现的文化内涵。此次主创访谈视频被投放于圣保罗州文化厅线上播放平台,超1000人观看。孔子学院巴方院长路易斯·保利诺在巴西最大的新闻门户网站之一“Brasil 247”上,接受了巴西记者专访。采访中,保利诺表示,电影节的影片让巴西民众从更全面的角度了解中国,同时带给巴西民众更多对于中国文化与现代生活的思考。线上圆桌论坛环节邀请了本届影展开幕式影片《脐带》导演乔思雪,本届影展策展人之一石文学和巴西电影导演、翻译家米莲娜·巴尔巴参加。论坛介绍了《脐带》的创作背景、创作思路、文化意境及其传播效果和影响,还探讨了青年导演在中巴两国的发展现状和前景,近500人在线参与讨论互动。")

这段话,我在编译器中,还得删除换行等操作,不然会报错,如果超过1万字,我不敢想象,我得删除多少换行符。

所以我们此时建议使用 “”" “”" 包裹这段话。

print("""人民网里约热内卢12月4日电 (记者时元皓)圣保罗州立大学孔子学院日前举办以“让光影编织文化纽带”为主题的第八届圣保罗中国电影展深度对话系列活动,包括影片主创访谈、巴西媒体专访和线上圆桌论坛,旨在让巴西民众更深入了解影展播放的影片,进一步了解中国文化。系列活动共吸引近5000人关注。影片主创访谈中,参展影片的主创人员既从宏观层面分析了中国电影在“走出去”的过程中,如何平衡“中国本土文化”和“国际需求”、满足跨文化交流的需要;又从微观层面,分析了影片的创作思路和呈现的文化内涵。此次主创访谈视频被投放于圣保罗州文化厅线上播放平台,超1000人观看。孔子学院巴方院长路易斯·保利诺在巴西最大的新闻门户网站之一“Brasil 247”上,接受了巴西记者专访。采访中,保利诺表示,电影节的影片让巴西民众从更全面的角度了解中国,同时带给巴西民众更多对于中国文化与现代生活的思考。线上圆桌论坛环节邀请了本届影展开幕式影片《脐带》导演乔思雪,本届影展策展人之一石文学和巴西电影导演、翻译家米莲娜·巴尔巴参加。论坛介绍了《脐带》的创作背景、创作思路、文化意境及其传播效果和影响,还探讨了青年导演在中巴两国的发展现状和前景,近500人在线参与讨论互动。""")

各位读者可以直观上对比下,以及在打印输出下,看下结果,你会发现,第二种竟然会原模原样的输出文章内容。

五、注释

我们在第2章节《小试牛刀》已经了解过单行注释的符号。

# 单行注释

但实际过程中,我们还需要多行注释。

"""
多行注释
多行注释
多行注释
"""

估计你已经发现,这个写法竟然和字符串的多行写法一样…

六、字符串索引和切片

字符串的切片其实和列表一样,如果你列表学的还行,那么这一个知识点可谓是手到擒来。

比如我们可以将“Hello World!”看成一个列表,字符串中的每一个字符,对应一个项(索引)。

H e l l o W o r l d !
0 1 2 3 4 5 6 7 8 9 10

我们此时,需要获取“e”字符该怎么操作?还记得列表的取值操作吗?

str = "Hello World!"
print(str[1])

我们再试试切片取值。

str = "Hello World!"
print(str[1:5])

更多的切片操作,不在赘述,可以看看我们前面学习的列表。

七、字符串的in 和 not in

是不是很熟悉?你会发现,当你前面学的还不错的时候,后面一些编程语法是相同的。

str = "Hello World!"
print('a' in str)
print('?' not in str)

八、字符串拼接

我们之前学习过使用+号来完成这一操作,但是你不觉得很麻烦?很不好看吗?

如果要拼接很多字符,岂不是n个+号,想想都头疼。

比如下面这个代码,我写的时候真的好烦,而且中英文切换老烦了。

name = "测试划水老师傅"
age = "30"
sex = "男"
hobby = "躺平"print("你好,我是" + name + "," + "我今年" + age + "岁" + "。" + "\n" + "性别:" + sex +"。" + "\n" + "我的爱好是:" + hobby + "。")

以后我不想再这样写了!这样写真的是让我很暴躁。

我们来试试新的写法。

name = "测试划水老师傅"
age = "30"
sex = "男"
hobby = "躺平"print("你好,我是" + name + "," + "我今年" + age + "岁" + "。" + "\n" + "性别:" + sex + "。" + "\n" + "我的爱好是:" + hobby + "。")

第1种简化写法。

print("你好,我是%s,我今年%s岁。\n""性别:%s。\n""我的爱好是:%s!" % (name, age, sex, hobby))

第2种简化写法。(推荐)

print(f'你好,我是{name},我今年{age}岁。\n'f'性别:{sex}。\n'f'我的爱好是:{hobby}!')

九、转换大小写

str_abc = 'abc'
str_ABC = "ABC"# capitalize() 首字母大写
print(f"str_abc:数据{str_abc},首字母大写{str_abc.capitalize()}")# lower() 将字符串全部转换为小写
print(f"数据{str_ABC},结果是:{str_ABC.lower()}")# swapcase() 将字符串中大写转换为小写,小写转换为大写
print(f"数据{str_ABC},结果是:{str_ABC.swapcase()}")# title() 将单词首字母大写
print(f"数据{str_abc},结果是:{str_abc.title()}")# upper() 将字符串全部转换为大写
print(f"数据{str_abc},结果是:{str_abc.upper()}")

十、合并字符串join()

join(),合并列表里面的字符串为一个新的字符串。

"""
语法:
字符或子串.join(多字符串组成的序列)
"""
my_list = ['aa','bb','cc']
new_str = '...'.join(my_list)
print(new_str)"""
aa...bb...cc
"""

十一、分割字符串split()

split(),按照指定字符分割字符串。

"""
语法:
字符串序列.split(分割字符,num),num表示的是分割字符出现的次数,即将来返回数据的个数为num+1个
"""str = "Java, Java, is cool."
str_list = str.split(",",1) #不添加第二个参数,会将所有","作为分割符合进行分割
print(str)
print(str_list)
print(type(str_list))"""
Java, Java, is cool.
['Java', ' Java, is cool.']
<class 'list'>
"""

十二、字符串替换 replace()

"""
语法:
字符串序列.replace(旧子串,新子串,替换次数)
说明replace并为对原有数据进行修改,修改后的数据是replace函数的返回值
字符串数据类型是不可变数据类型
"""str = "Java Java is cool."
new_str = str.replace("Java","Python",1)
print(str)
print(new_str)"""
Java Java is cool.
Python Java is cool.
"""

十三、字符串内容判断方法

str_abc = 'abc'# isalnum() 检测字符串是否仅包含0-9 A-Z a-z
print(f"str_abc:数据{str_abc},是否仅包含0-9 A-Z a-z?{str_abc.isalnum()}")# isalpha() 检测字符串是否仅包含A-Z a-z
print(f"str_abc:数据{str_abc},是否仅包含A-Z a-z?{str_abc.isalpha()}")# isdigit() 检测字符串是否仅包含数字
print(f"str_abc:数据{str_abc},是否仅包含数字?{str_abc.isdigit()}")# islower() 检测字符串是否均为小写
print(f"str_abc:数据{str_abc},是否均为小写?{str_abc.islower()}")# isspace() 检测字符串是否出现空白字符
print(f"str_abc:数据{str_abc},是否出现空白字符?{str_abc.isspace()}")# istitle() 检测字符串是否首字母大写
print(f"str_abc:数据{str_abc},是否首字母大写?{str_abc.istitle()}")# isupper() 检测字符串是否均为大写
print(f"str_abc:数据{str_abc},是否均为大写?{str_abc.isupper()}")

十四、字符串内容统计方法

count() 统计某个子串在该字符串中出现几次。

"""
语法:
字符串序列.count(子串)
"""
str = "My name is Python."
print(str.count("n"))

十五、字符串是否包含某个子串

index() 检查某个子串是否包含在这个字符串,如果包含返回该下标,否则程序报错。

"""
语法:
字符串序列.index(旧子串,新子串,替换次数)
"""
str = "My name is Python."
print(str.index("name"))

find() 检查某个子串是否包含在这个字符串,如果包含返回该下标,否则返回-1。

"""
语法:
字符串序列.find(子串,开始位置下标,结束位置下标)#不输入下标默认整个字符串
"""
str = "My name is Python."
print(str.find("name"))

练习题-领导找我,我不在工位该怎么办?

"""
需求:
假如每次领导找我们,我们都要回复领导这些消息,但是又不想每次打一大堆文字,想提升效率的同时,摸摸鱼,该怎么办?:
1. 好的,领导!
2. 领导,这件事有些复杂! 我一会找您沟通下。
3. 领导,我这会很忙! 大概30分钟后,我做完手上的活来找您。
(暂时不考虑根据领导的话来识别回复,目前已学习内容还无法做到,我们仅考虑随机回复这3种话术即可。)知识补充:
1. 需要安装第三方模块pyperclip来实现复制粘贴操作。
2. 创建功能函数,使用程序调试main方法执行。例子:
def print_text():print("123")if __name__ == '__main__':print_text()"""

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/208719.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt使用Cryptopp生成HMAC-MD5

近期项目中HTTPS通讯中&#xff0c;token需要使用HMAC-MD5算法生成&#xff0c;往上找了一些资料后&#xff0c;仍不能满足自身需求&#xff0c;故次一记。 前期准备&#xff1a; ①下载Cryptopp库&#xff08;我下载的是8.8.0 Release版本&#xff09;&#xff1a;Crypto Li…

基于ResNet模型的908种超大规模中草药图像识别系统

中草药药材图像识别相关的实践在前文中已有对应的实践了&#xff0c;感兴趣的话可以自行移步阅读即可&#xff1a; 《python基于轻量级GhostNet模型开发构建23种常见中草药图像识别系统》 《基于轻量级MnasNet模型开发构建40种常见中草药图像识别系统》 在上一篇文章中&…

RocketMQ-RocketMQ高性能核心原理(流程图)

1.NamesrvStartup 2.BrokerStartup 3. DefualtMQProducer 4.DefaultMQPushConsumer

maven工程的pom.xml文件中增加了依赖,但偶尔没有下载到本地仓库

maven工程pom.xml文件中的个别依赖没有下载到本地maven仓库。以前没有遇到这种情况&#xff0c;今天就遇到了这个问题&#xff0c;把解决过程记录下来。 我在eclipse中编辑maven工程的pom.xml文件&#xff0c;增加对mybatis的依赖&#xff0c;但保存文件后&#xff0c;依赖的j…

Java--1v1双向通信-控制台版

文章目录 前言客户端服务器端输出线程端End 前言 TCP&#xff08;Transmission Control Protocol&#xff09;是一种面向连接的、可靠的网络传输协议&#xff0c;它提供了端到端的数据传输和可靠性保证。 本程序就是基于tcp协议编写而成的。 利用 TCP 协议进行通信的两个应用…

HarmonyOS(鸿蒙操作系统)与Android系统 各自特点 架构对比 各自优势

综合对比 HarmonyOS&#xff08;鸿蒙操作系统&#xff09;是由华为开发的操作系统&#xff0c;旨在跨多种设备和平台使用。HarmonyOS的架构与谷歌开发的广泛使用的Android操作系统有显著不同。以下是两者之间的一些主要比较点&#xff1a; 设计理念和使用案例&#xff1a; Harm…

go语言 grpc 拦截器

文章目录 拦截器服务端拦截器一元拦截器流拦截器 客户端拦截器一元拦截器流拦截 多个拦截器 代码仓库 拦截器 gRPC拦截器&#xff08;interceptor&#xff09;是一种函数&#xff0c;它可以在gRPC调用之前和之后执行一些逻辑&#xff0c;例如认证、授权、日志记录、监控和统计…

docker学习(四、修改容器创建新的镜像推送到云上)

镜像是只读的&#xff0c;容器是可编辑的。Docker镜像是分层的&#xff0c;支持通过扩展镜像&#xff0c;创建新的镜像。 学到这里感觉docker跟git很想~~ 通过docker commit将修改的容器做成新的镜像 # 将容器做成新的镜像 docker commit -m"提交备注" -a"作…

大创项目推荐 交通目标检测-行人车辆检测流量计数 - 大创项目推荐

文章目录 0 前言1\. 目标检测概况1.1 什么是目标检测&#xff1f;1.2 发展阶段 2\. 行人检测2.1 行人检测简介2.2 行人检测技术难点2.3 行人检测实现效果2.4 关键代码-训练过程 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 毕业设计…

【后端学前端学习记录】学习计划

1、个人背景 写了足够久的后端了&#xff0c;常用的语言基本上都接触过&#xff0c;没有在工作中写过前端 一直想做一些前端的工作&#xff0c;但是前端技能不足加上自己审美不行&#xff0c;写出的界面总是很丑 所以一直对前端做不好&#xff0c;也没有真正下手。 2、动机 种…

Navicat 技术指引 | 连接 GaussDB 分布式

Navicat Premium&#xff08;16.3.3 Windows 版或以上&#xff09;正式支持 GaussDB 分布式数据库。GaussDB 分布式模式更适合对系统可用性和数据处理能力要求较高的场景。Navicat 工具不仅提供可视化数据查看和编辑功能&#xff0c;还提供强大的高阶功能&#xff08;如模型、结…

软件兼容性测试:保障多样化用户体验的重要功能

随着移动设备和操作系统的快速发展&#xff0c;软件兼容性测试变得越发重要。这项测试确保软件在不同平台、设备和环境下都能够正常运行&#xff0c;提供一致而稳定的用户体验。下面是软件兼容性测试中的一些关键功能&#xff1a; 1. 跨平台兼容性测试 在不同操作系统上运行的软…

macOS Big Sur/Mac电脑安装vscode显示您没有权限来打开应用程序‘Visual Studio Code‘ 请联系您的电脑或网络管理员问题修复

错误方法 首先我以为我的权限不足。&#xff0c;需要去用户群组里设置。结果根本不是这个的问题。 1.在系统偏好设置->用户与群组检查了一下我的用户是不是管理员 结果发现是管理员 2.根据苹果提示&#xff0c;右键我的文件夹->显示简介->最下面的共享与权限 解锁&…

SAP UI5 walkthrough step5 Controllers

在这个章节&#xff0c;我们要做的是&#xff0c;将之前的text文本展示为一个按钮&#xff0c;并将声明绑定在点击按钮事件。 因为改的是外观&#xff0c;所以我们修改的是view.XML webapp/view/App.view.xml <mvc:ViewcontrollerName"ui5.walkthrough.controller.A…

element中el-select多选v-model是对象数组

文章目录 一、问题二、解决三、最后 一、问题 element中的el-select的v-model一般都是字符串或者字符串数组&#xff0c;但是有些时候后端接口要求该字段要传对象或者对象数组&#xff0c;如果再转换一次数据&#xff0c;对于保存配置和回显都是吃力不讨好的事情。如下所示&am…

SpringBoot 项目将jar 部署在服务器引用外部 配置文件

SpringBoot 官方给出了四种方式引用外部配置文件的方式 在jar包的同一目录下建一个config文件夹&#xff0c;然后把配置文件放到这个文件夹下(最常用)直接把配置文件放到jar包的同级目录在classpath下建一个config文件夹&#xff0c;然后把配置文件放进去在classpath下直接放配…

二叉树的层序遍历[中等]

优质博文&#xff1a;IT-BLOG-CN 一、题目 给你二叉树的根节点root&#xff0c;返回其节点值的 层序遍历 。&#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],…

二叉树的遍历之迭代遍历

前言&#xff1a;在学习二叉树的时候我们基本上已经了解过二叉树的三种遍历&#xff0c;对于这三种遍历&#xff0c;我们采用递归的思路&#xff0c;很简单的就能实现&#xff0c;那么如何用迭代的方法去解决问题&#xff1f; 我们首先来看第一个&#xff1a; 前序遍历 144.…

【计算机网络学习之路】HTTP请求

目录 前言 HTTP请求报文格式 一. 请求行 HTTP请求方法 GET和POST的区别 URL 二. 请求头 常见的Header 常见的额请求体数据类型 三. 请求体 结束语 前言 HTTP是应用层的一个协议。实际我们访问一个网页&#xff0c;都会像该网页的服务器发送HTTP请求&#xff0c;服务…

chrome 调试之 - 给微软小冰看病(无论给小冰发送什么内容都只回复“我已经开始升级啦,期待一下吧!”)

微软 Bing 搜索推出了小冰AI智能聊天模块&#xff0c;具体启用方式是用edge或chrome浏览器打开链接 cn.bing.com 后在输入框搜索任意内容&#xff0c;待搜索结果页面加载完并稍等片刻&#xff0c;页面右侧就会出现一个躲在滚动条后面的小萝莉&#xff0c;抚摸...不&#xff0c;…