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

news2024/11/18 11:42:17

在这里插入图片描述

文章目录

  • 一、回顾
  • 二、新手容易踩坑的引号
  • 三、转义字符
  • 四、多行字符串写法
  • 五、注释
  • 六、字符串索引和切片
  • 七、字符串的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 2
    print('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.coloradmin.cn/o/1298663.html

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

相关文章

Nginx的性能优化、安全以及防盗链配置

目录 一、nginx的日志分割 二、nginx性能优化之启用epoll模型 三、nginx性能优化之设置worker进程数并与cpu进行绑核 四、nginx性能优化之调整worker的最大打开文件数和最大处理连接请求数量 五、nginx性能优化之启用gzip压缩&#xff0c;提高传输&#xff0c;减少带宽 六…

通俗易懂,什么是.NET Core以及.NET Core能做什么

我们都知道.NET Core是一个可以用来构建现代、可伸缩和高性能的跨平台软件应用程序的通用开发框架。可用于为Windows、Linux和MacOS构建软件应用程序。与其他软件框架不同&#xff0c;.NET Core是最通用的框架&#xff0c;可用于构建各种软件&#xff0c;包括Web应用程序、移动…

HLS实现图像膨胀和腐蚀运算--xf_dilation和xf_erosion

一、图像膨胀和图像腐蚀概念 我们先定义&#xff0c;需要处理的图片为二值化图像A。图片的背景色为黑色&#xff0c;即像素值为0。图片的目标色为白色&#xff0c;即像素值为1。 再定义一个结构元S&#xff0c;结构元范围内所有的像素为白色&#xff0c;像素值为1。 1、图像的…

《三十》模块化打包构建工具 Rollup

19的2小时06分钟 Rollup 是一个 JavaScript 的模块化打包工具&#xff0c;可以帮助编译微小的代码到庞大的复杂的代码中&#xff08;例如一个库或者一个应用程序&#xff09;。 Rollup 和 Webpack 的区别&#xff1a; Rollup 也是一个模块化的打包工具&#xff0c;但是它主要…

JUnit 之初体验

文章目录 1.定义2.引入1&#xff09;使用 Maven 工具2&#xff09;使用 Gradle 工具3&#xff09;使用 Jar 包 2.样例0&#xff09;前提1&#xff09;测试类2&#xff09;测试方法3&#xff09;测试断言4&#xff09;实施 总结 1.定义 JUnit 是一个流行的 Java 单元测试框架&a…

精选Axure原型设计模板,RP原型组件库(PC端移动端元件库及Axure函数及运算符说明)

好的原型组件会大大的提高产品经理的工作效率&#xff0c;小7在陆续整理、精选Axure 8的原型设计模板&#xff0c;包含了原型设计的常用元素和AxureRP 8函数及运算符的说明文档&#xff0c;及各种设备模板框架。 本文也是基于小7另一篇文章的补充&#xff0c;更多更详细的资料…

C++编程法则365天一天一条(24)RTTI运行时类型信息typeid和type_info

文章目录 基本用法编译时或运行时判定 基本用法 typeid 是 C 的一个运算符&#xff0c;它用于获取表达式的类型信息。它返回一个 std::type_info 对象引用&#xff0c;该对象包含有关表达式的类型的信息。 要使用 typeid 运算符&#xff0c;需要包含 <typeinfo> 头文件…

FPGA 低延时 TCP UDP IP协议栈兼容1G 10G 25G MAC

在计算和数据中心、军事和航天、政府、仪器与测量、金融服务和广播和视频等行业&#xff0c;需要高可靠性的硬件和软件产品&#xff0c;帮助客户更快地开发部署新一代产品&#xff0c;减少技术和市场风险&#xff0c;我司研发的低延迟TCP/IP的IP核的传输速率高于传统网口&#…

二十一章总结

网络程序设计基础 局域网与互联网 为了实现两台计算机的通信&#xff0c;必须用一个网络线路连接两台计算机。如下图所示 网络协议 1.IP协议 IP是Internet Protocol的简称&#xff0c;是一种网络协议。Internet 网络采用的协议是TCP/IP协议&#xff0c;其全称是Transmission…

Nginx基础篇:Nginx搭建、Nginx反向代理、文件服务器部署配置。

Nginx Linux系统安装以及反向代理的配置 简介优点nginx 环境安装常用Nginx 命令nginx 文件服务器搭建 简介 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器&#xff0c;同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔赛索耶夫为俄罗斯访问量第二的Rambler.ru站点…

AI:94-基于深度学习的微小目标检测与定位

🚀 本文选自专栏:人工智能领域200例教程专栏 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的核心代码,详细讲解供大家学习,希望可以帮到大家。欢迎订阅支持,正在不断更新…

目标检测、目标跟踪、重识别

文章目录 环境前言项目复现特征提取工程下载参考资料 环境 ubuntu 18.04 64位yolov5deepsortfastreid 前言 基于YOLOv5和DeepSort的目标跟踪 介绍过针对行人的检测与跟踪。本文介绍另一个项目&#xff0c;结合 FastReid 来实现行人的检测、跟踪和重识别。作者给出的2个主…

Dantzig-Wolfe分解

参考资料&#xff1a;Introduction to Linear Programming&#xff0c; Dimitris Bertsimas etc 这篇博客是个人笔记的电子版(●ˇ∀ˇ●)&#xff0c;希望之后的自己也能看懂吧 在这本教材的Dantzig-Wolfe分解章节中&#xff0c;作者主要列举了两个小例子&#xff0c;结合坐标…

深入理解Os--调用劫持

1.调用劫持 以Linux系统为例&#xff0c;介绍三种可实现调用劫持的技术。 1.1.编译时调用劫持 以一个实例展开介绍 (1).main.cpp #include <stdio.h> #include <malloc.h> int main() {int* p (int*)malloc(32);free(p);return (0); }(2).mymalloc.cpp #inclu…

30、卷积 - 参数 stride 的作用

在卷积运算中,还有一个参数叫做 stride,它对卷积的运算以及运算结果影响也很大。 还是先看卷积动图,从图上你能猜到 stride 参数在哪吗? 在卷积操作中,stride 指的是卷积核在滑动过程中每次跳过的像素数量。 stride 决定了卷积核在输入图像上移动的速度。例如,如果 str…

【Angular 开发】Angular 信号的应用状态管理

自我介绍 做一个简单介绍&#xff0c;年近48 &#xff0c;有20多年IT工作经历&#xff0c;目前在一家500强做企业架构&#xff0e;因为工作需要&#xff0c;另外也因为兴趣涉猎比较广&#xff0c;为了自己学习建立了三个博客&#xff0c;分别是【全球IT瞭望】&#xff0c;【架构…

STM32基于USB串口通信应用开发

✅作者简介&#xff1a;热爱科研的嵌入式开发者&#xff0c;修心和技术同步精进&#xff0c; 代码获取、问题探讨及文章转载可私信。 ☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。 &#x1f34e;获取更多嵌入式资料可点击链接进群领取&#xff0c;谢谢支持&#xff01;…

使用selenium的edge浏览器登录某为

互联网上基本都是某哥的用法&#xff0c;其实edge和某哥的用法是一样的就有一下参数不一样。 一、运行环境 Python&#xff1a;3.7 Selenium&#xff1a;4.11.2 Edge&#xff1a;版本 120.0.2210.61 (正式版本) (64 位) 二、执行代码 from time import sleepfrom selenium…

Course2-Week4-决策树

Course2-Week4-决策树 文章目录 Course2-Week4-决策树1. 决策树的直观理解2. 构建单个决策树2.1 熵和信息增益2.2 构建决策树——二元输入特征2.3 构建决策树——多元输入特征2.4 构建决策树——连续的输入特征2.5 构建回归树——连续的输出结果(选修)2.6 代码实现-递归构建单个…

基于K-means与CNN的遥感影像分类方法

基于K-means与CNN的遥感影像分类 一、引言 1.研究背景 航天遥感技术是一种通过卫星对地观测获取遥感图像信息数据的技术&#xff0c;这些图像数据在各领域都发挥着不可或缺的作用。遥感图像分类主要是根据地面物体电磁波辐射在遥感图像上的特征&#xff0c;判断识别地面物体的属…