字符串的定义方式
单引号
str1 = ‘hello world!!!’ # <class ‘str’>
print(type(str1))
双引号
str2 = “hello python” # <class ‘str’>
print(type(str2))
三对单引号
str3 = ‘’‘hello bigdata’‘’ # <class ‘str’>
print(type(str3))
三对双引号
str4 = “”“hello china”“” # <class ‘str’>
print(type(str4))
一对引号和三对引号的区别
在一对引号内部进行手动换行,无法修改其字符串的格式,必须使用转义字符\n \t等
str1 = 'hello ’ \
‘world’
print(str1)
在三对引号内进行手动换行,可以在打印时输出换行格式,无需使用转义字符
str3 = ‘’'hello
bigdata’‘’
print(str3)
str4 = “”"
弃我去者昨日之日不可留
乱我心者今日之日多烦忧
长风万里送秋雁
对此可以酣高楼
…
“”"
三对引号可以作为多行注释
需求 : 输出 I’m Jake.
如果字符串被双引号包裹,则内部可以单独使用单引号
print(“I’m jake”)
需求:输出"鲁迅说:I’m a 周树人"
print(‘’‘“孔子说:I’m a 文豪”’‘’)
2、字符串索引
索引就是系统给字符串中每一个元素的编号
-
正数索引:从0开始,从左至右依次递增
-
负数索引:从-1开时,从右至左依次递减
使用索引可以获取字符串中的元素
- 字符串[元素的索引]
什么是字符串索引?
就是保存字符串时,将所有字符依次存入字符串所在空间,并且按照顺序将元素依次存放, 为了方便存取数据,我们讲元素进行编号,从0开始依次递增
通过下标索引,可以获取元素,或者进行切片等操作
‘’’
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
‘’’
str1 = ‘itheima’
通过索引获取元素的格式: 字符串[元素索引]
需求:想获取第5个元素
print(str1[4])
需求:获取t
print(str1[1])
‘’’
i t h e i m a
正数索引
0 1 2 3 4 5 6
负数索引
-7 -6 -5 -4 -3 -2 -1
‘’’
结论:字符串中的索引,正数索引从0开始,从左至右依次递增, 负数索引,从-1开始从右至左依次递减
需求:使用负数索引取 m
print(str1[-2])
print(str1[-4])
输入 input
user_name = input(‘请输入你的用户名’)
输出
print(f’您的用户名是{user_name}')
print(‘您输入的用户名是%s’ % user_name)
3、字符串切片
字符串切片就是讲字符串中的一部分数据按照指定规则进行分隔得到的新的字符串
字符串切片的格式
字符串[起始位置索引:终止位置索引:步长]
起始位置可以省略:
-
步长为正:起始位置默认为字符串开始
-
步长为负:起始位置默认为字符串结束
终止位置可以省略:
-
步长为正:终止位置默认为字符串结束
-
步长为负:终止位置默认为字符串开始
步长可以省略,省略后默认为1,并且可以省略冒号
复制字符串:str[:]
反转字符串:str[::-1]
注意:如果步长为正,则起始位置在终止位置左侧,如果步长为负,则起始位置在终止位置右侧
切片:就是按照一定的索引位置和步长将字符串分割出一部分就是切片
切片的格式:数据序列[起始位置索引:结束位置索引:步长] 字符串,列表,元组,都可以进行切片
str1 = ‘itheima’
需求:将the切片出来
字符串切片以及其他容器类型的切片操作,都会重新生成一个新的数据序列,不会对原有数据序列产生影响
str2 = str1[1:4:1]
print(str2)
切片逻辑
起始位置: 字符串切片的起点(包含)
结束位置:字符串切片的终点(不包含)
在开发中绝大多数范围区间是左闭右开区间,其余内容单独记忆(例如 randint是一个闭区间)
步长:步长就是每一次查找数据的间隔(相邻两个索引的差值就是步长)
‘’’
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
‘’’
str2 = ‘我爱北京天安门,天安门上太阳升!’
获取"北京天安门"
print(str2[2:7:1])
如果步长为1 可以被省略
步长省略后,:也可以省略
print(str2[2:7])
起始位置也可以省略
如果起始位置省略,步长为正数,则起始位置为字符串开始
print(str2[:7:1]) # 我爱北京天安门
如果起始位置省略,步长为负数,则起始位置为字符串末尾
print(str2[:7:-1]) # !升阳太上门安天
为什么为空? 字符串切片起点 是索引为2 的位置, 步长是-1 切片区间[2,7),此时从2的位置从右向左步长为1 切片此区域没有数据.
print(str2[2:7:-1]) # 空字符串
结论: 如果步长是负数,开始位置要在结束位置右侧,否则没有数据
结束位置可以省略
如果结束位置省略,步长为正数,则结束位置为字符串末尾
print(str2[8::1]) # 天安门上太阳升!
下方表达式和上一行是否含义相同? 不相同,因为结束位置写-1不包含结束位置
print(str2[8👎1]) # 天安门上太阳升
如果结束位置省略,步长为负数,则结束位置为字符串开始
print(str2[8::-1]) # 天,门安天京北爱我
如果结束位置写0 含义也不相同
print(str2[8:0:-1]) # 天,门安天京北爱我
需求:在字符串中截取"天门天门"
print(str2[4: 11: 2]) # 天门天门
在使用字符串切片进行非1步长书写时,要注意起始位置和结束位置,并且查看间隔
Python中优雅的字符串反转方式
print(str2[::-1]) # !升阳太上门安天,门安天京北爱我
python中复制数据序列的方法
str3 = str2[:]
print(str3) # 我爱北京天安门,天安门上太阳升!
4、字符串查询
-
index:查找字符串中子字符串所在位置i,如果有该字符串,查询其
==从左至右==
第一次出现的位置的正数索引,==否则报错==
。 -
find:查找字符串中子字符串所在位置i,如果有该字符串,查询其
==从左至右==
第一次出现的位置的正数索引,==否则返回-1==
。 -
rindex:查找字符串中子字符串所在位置i,如果有该字符串,查询其
==从右至左=
=第一次出现的位置的正数索引,==否则报错==
。 -
rfind:查找字符串中子字符串所在位置i,如果有该字符串,查询其
==从右至左==
第一次出现的位置的正数索引,==否则返回-1==
。 -
count:查询子字符串在指定字符串中出现的次数。
‘’’
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
‘’’
str1 = ‘hello python’
index
需求:查找p所在的索引位置
格式: 字符串.index(self(不用传值), sub(子字符串), start(起始位置), end(结束位置))
print(str1.index(‘p’)) # 6
如果字符串中含有多个子字符串,则会返回指定范围内的从左至右的第一个查找到的子字符串位置索引
print(str1.index(‘o’)) # 4
查询指定范围内的字符串,虽然指定了范围,但是计算索引是从左至右依次递增的
print(str1.index(‘o’, 5, 12)) # 10
ValueError: substring not found
结论:找不到对应的子字符串,则会报错,如果能够查找到数据返回当前子字符串的正数索引
指定查找范围是左闭右开区间
print(str1.index(‘o’, 5, 10)) # 10
print(str1.index(‘o’, 10, 12)) # 10
find
str1 = ‘hello python’
需求:查找p所在的索引位置
格式: 字符串.find(self(不用传值), sub(子字符串), start(起始位置), end(结束位置))
print(str1.find(‘p’)) # 6
如果字符串中含有多个子字符串,则会返回指定范围内的从左至右的第一个查找到的子字符串位置索引
print(str1.find(‘o’)) # 4
指定范围查找
需求:查找o 指定范围为 5,10 10,12
结论:使用find进行查询时,如果查询的子字符串不存在,则返回-1,如果存在则返回指定正数索引
find的查询范围是左闭右开区间
print(str1.find(‘o’, 5, 10))
print(str1.find(‘o’, 10, 12))
查询的子字符串可以是单个字符可以是多个字符
print(str1.find(‘python’)) # 6
rfind
和find使用方式完全相同,只是在查询时,从右至左查询,返回第一次查询到的字符索引,返回的依然是正数索引
print(str1.rfind(‘o’)) # 10
rindex
和index使用方式完全相同,只是在查询时,从右至左查询,返回第一次查询到的字符索引,返回的依然是正数索引
print(str1.rindex(‘o’))
结论:index 和 find 使用方法完全一致,只是,index 在查询不到子字符串时会报错,find会返回-1
count() 计数
使用count 可以返回当前子字符串在指定字符串中出现的次数
需求:查询o在str1 中出现的多少次
提示:在大多数编程语言中, 计数从1开始数, 索引或编号,从0开始编号
格式: 字符串.count(self(不用传值, x(要查询个数的子字符串), start(开始位置), end(结束位置)))
print(str1.count(‘o’))
需求,查询指定范围内h的个数 从1-9 9-12
结论:1.count查询的范围是一个左闭右开区间
2.如果没有查询到子字符串则返回0 不会报错
print(str1.count(‘h’, 1, 9)) # 0
print(str1.count(‘h’, 9, 12)) # 1
5、字符串替换
replace:将旧值替换指定字符串中的新值
replace
str1 = ‘hello python’
需求: 将o 替换为 $
格式: replace(self(不用传值), old(旧值), new(新值), count(替换次数))
print(str1.replace(‘o’, 'KaTeX parse error: Expected 'EOF', got '#' at position 6: ')) #̲ hell pyth$n
指定替换次数
如果不指定替换次数,默认将所有的制定字符全部替换
print(str1.replace(‘o’, 'KaTeX parse error: Expected 'EOF', got '#' at position 9: ', 1)) #̲ hell python
如果指定的替换次数大于出现的次数,则也是只替换出现的次数
print(str1.replace(‘o’, 'KaTeX parse error: Expected 'EOF', got '#' at position 10: ', 10)) #̲ hell python
6、字符串的拆分和合并
split:字符串按照指定分隔符进行拆分
-
拆分后得到的结果是有拆分后的字符串组成的一个列表
-
拆分后,所有的分隔符消失
join:将字符串序列(容器类型中所有元素均为字符串)按照指定分隔符进行合并
split 字符串拆分
str1 = ‘I love Python and java and c and lixiaolong’
需求: 将所有的单词按照空格为分隔符进行拆分,拆分为多个字符串
split 会按照指定分隔符进行拆分,拆分完成后 会将所有的拆分后的结果以字符串形式保存到列表中
split(self(不用传值), sep(分隔符), maxsplit(最大分割次数))
print(str1.split()) # [‘I’, ‘love’, ‘Python’, ‘and’, ‘java’, ‘and’, ‘c’, ‘and’, ‘lixiaolong’]
指定最大分割次数
可以把split看成一把刀,字符串看成一条线,砍一刀分成两份,砍两刀分成3分以此类推
print(str1.split(’ ', 3)) # [‘I’, ‘love’, ‘Python’, ‘and java and c and lixiaolong’]
需求:按照以’a’为分割符进行拆分,将str1 最大拆分次数60次
使用谁作为分隔符,则拆分后该分隔符消失,
最大拆分次数如果超过可以拆分的上限,则保持拆分上线即可,不会报错
print(str1.split(‘a’, 60)) # ['I love Python ', ‘nd j’, ‘v’, ’ ', 'nd c ', ‘nd lixi’, ‘olong’]
最后
Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
👉Python所有方向的学习路线👈
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
👉Python必备开发工具👈
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
👉Python全套学习视频👈
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
👉实战案例👈
学python就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。
因此在学习python的过程中一定要记得多动手写代码,教程只需要看一两遍即可。
👉大厂面试真题👈
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!