文章目录
- 一、回顾
- 二、新手容易踩坑的引号
- 三、转义字符
- 四、多行字符串写法
- 五、注释
- 六、字符串索引和切片
- 七、字符串的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()
"""