「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.rhkb.cn/news/213878.html

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

相关文章

使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动

我使用Remix编写合约&#xff0c;MetaMask钱包工具和Ganache搭建了一个私有网络&#xff0c;并且实现了合约的部署和互动。 在前面的博客中提到了 Remix在线环境及钱包申请 以及 Solidity的基本语法 &#xff0c;没看过的小伙伴可以点击链接查看一下&#xff0c;都是在本专栏下…

概率测度理论方法(第 2 部分)

一、说明 欢迎回到这个三部曲的第二部分&#xff01;在第一部分中&#xff0c;我们为测度论概率奠定了基础。我们探索了测量和可测量空间的概念&#xff0c;并使用这些概念定义了概率空间。在本文中&#xff0c;我们使用测度论来理解随机变量。 作为一个小回顾&#xff0c;在第…

stm32 使用18B20 测试温度

用18b20 测试温度是非常常用的&#xff0c;不过18B20的调试不是这么容易的&#xff0c;有些内容网上很多的&#xff0c;不再重复说了&#xff0c;我先把波形说一下&#xff0c;再说程序部分&#xff1a; 整个都温度数据的顺序是&#xff1a; 1.700uS的低电平复位并测试18B20的…

如何用Python编写俄罗斯方块Tetris游戏?

在本文中&#xff0c;我们将用Python代码构建一个令人惊叹的项目&#xff1a;俄罗斯方块游戏。在这个项目中&#xff0c;我们将使用pygame库来构建游戏。要创建此项目&#xff0c;请确保您的系统中安装了最新版本的Python。让我们开始吧&#xff01; Pygame是一组跨平台的Pyth…

基于Python+Django+mysql图书管理系统

基于PythonDjangomysql图书管理系统 一、系统介绍二、功能展示三、其它系统四、获取源码 一、系统介绍 程序开发软件&#xff1a;Pycharm 数据库&#xff1a;mysql 采用技术&#xff1a; Django(一个MVT框架&#xff0c;类似Java的SSM框架) 人生苦短&#xff0c;我用Python&a…

构建外卖系统:使用Django框架

在当今数字化的时代&#xff0c;外卖系统的搭建不再是什么复杂的任务。通过使用Django框架&#xff0c;我们可以迅速建立一个强大、灵活且易于扩展的外卖系统。本文将演示如何使用Django构建一个简单的外卖系统&#xff0c;并包含一些基本的技术代码。 步骤一&#xff1a;安装…

Java、JDK、JRE、JVM

Java、JDK、JRE、JVM 一、 Java 广义上看&#xff0c;Kotlin、JRuby等运行于Java虚拟机上的编程语言以及相关的程序都属于Java体系的一员。从传统意义上看&#xff0c;Java社区规定的Java技术体系包括以下几个部分&#xff1a; Java程序设计语言各种硬件平台上的Java虚拟机实…

[报错]记录IDEA远程开发报错:java: Cannot run program.....

报错内容 IDEA在进行远程开发的时候报错&#xff0c;内容如下&#xff1a; java: Cannot run program "/usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/java" (in directory "/home/jim/.cache/JetBrains/RemoteDev-IU/_home_jim_DevCodes_Github_zfile/compile-…

基于JavaWeb+SSM+Vue实习记录微信小程序系统的设计和实现

基于JavaWebSSMVue实习记录微信小程序系统的设计和实现 源码获取入口Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 Lun文目录 目 录 摘 要 III Abstract 1 1 系统概述 1 1.1 概述 2 1.2课题意义 3 1.3 主要内…

[Linux] 用LNMP网站框架搭建论坛

一、nginx在其中工作原理 原理&#xff1a; php-fpm.conf是控制php-fpm守护进程 它是php.ini是一个php解析器 工作过程&#xff1a; 1.当客户端通过域名请求访问时&#xff0c;Nginx会找到对应的虚拟主机 2. Nginx将确定请求。 对于静态请求&#xff0c;Nginx会自行处理…

基于ssm平面设计课程在线学习平台系统源码和论文

idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;平面设计课程在线学习平台系统也不例外&#xff0c;但目前国内的市场仍都使用人工管理&#xff0c;市场规模越来越大&#xff0c;…

持续集成交付CICD:Jenkins配置Nexus制品上传流水线

目录 一、实验 1.Jenkins配置制品上传流水线 二、问题 1.上传制品显示名称有误 一、实验 1.Jenkins配置制品上传流水线 (1) 新建流水线项目 &#xff08;2&#xff09;描述 &#xff08;3&#xff09;添加参数 &#xff08;4&#xff09;查看构建首页 &#xff08;5&…

详解TCP报文格式以及TCP相关特性

✏️✏️✏️今天给大家分享的是TCP报文格式的解释以及TCP协议的一些重要特性。 清风的CSDN博客 &#x1f6e9;️&#x1f6e9;️&#x1f6e9;️希望我的文章能对你有所帮助&#xff0c;有不足的地方还请各位看官多多指教&#xff0c;大家一起学习交流&#xff01; ✈️✈️✈…

【Docker】进阶之路:(六)Docker镜像

【Docker】进阶之路&#xff1a;&#xff08;六&#xff09;Docker镜像 理解镜像构成获取镜像列出镜像删除本地镜像定制镜像使用Dockerfile定制镜像 使用docker build命令Dockerfile文件定制镜像 理解镜像构成 镜像由多个层组成&#xff0c;每层叠加之后&#xff0c;从外部看来…

黑豹程序员-java发邮件,发送内容支持html,带多附件的案例

介绍 发邮件mail是常见的软件功能&#xff0c;下面利于spring和java的mail库实现发送内容支持html&#xff0c;带多附件的案例 开启SMTP邮件发送协议 谁提供的SMTP邮件服务&#xff0c;就找谁开启。QQ邮箱类似。 依赖 <!--Java MAil 发送邮件API--><dependency&g…

GPT-4V 在机器人领域的应用

在科技的浩渺宇宙中&#xff0c;OpenAI如一颗璀璨的星辰&#xff0c;于2023年9月25日&#xff0c;以一种全新的方式&#xff0c;向世界揭示了其最新的人工智能力作——GPT-4V模型。这次升级&#xff0c;为其旗下的聊天机器人ChatGPT装配了语音和图像的新功能&#xff0c;使得用…

Linux基本指令(超详版)

Linux基本指令&#xff08;超详版&#xff09; 1. ls指令2.pwd指令3. cd 指令4.touch指令5mkdir指令6.rmdir指令&&rm指令7.man指令7.cp指令8.mv指令9.echo指令10.cat指令11.more指令12.less指令13.head指令14.tail指令15.date指令16.find指令17.grep指令zip(打包压缩) …

Spring基于XML文件配置AOP

AOP AOP&#xff0c;面向切面编程&#xff0c;是对面向对象编程OOP的升华。OOP是纵向对一个事物的抽象&#xff0c;一个对象包括静态的属性信息&#xff0c;包括动态的方法信息等。而AOP是横向的对不同事物的抽象&#xff0c;属性与属性、方法与方法、对象与对象都可以组成一个…

kafka常见问题处理

1. 如何防⽌消息丢失 在生产者层面&#xff0c;我们有个ack参数确认机制 设置成-1&#xff0c;也就是副本全部同步了leader才发送ack&#xff0c;这样确保leader和副本挂掉只剩一个还能 保证消息不丢失 消费者&#xff1a; 把⾃动提交改成⼿动提交 2. 如何防⽌重复消费 在…

飞天使-linux操作的一些技巧与知识点3

http工作原理 http1.0 协议 使用的是短连接&#xff0c;建立一次tcp连接&#xff0c;发起一次http的请求&#xff0c;结束&#xff0c;tcp断开 http1.1 协议使用的是长连接&#xff0c;建立一次tcp的连接&#xff0c;发起多次http的请求&#xff0c;结束&#xff0c;tcp断开ngi…