一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
工具都帮大家整理好了,安装就可直接上手!
三、最新Python学习笔记
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、Python视频合集
观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
五、实战案例
纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
六、面试宝典
简历模板
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
- 步长为负:终止位置默认为字符串开始
步长可以省略,省略后默认为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学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
‘’’
join 字符串合并
list1 = str1.split()
list2 = [1,2,3,4,‘abc’]
print(list1)
将list1 按照指定分隔符❤ 合并为一个字符串
格式:分隔符.join(iterable(可迭代类型))
print(‘❤’.join(list1)) # I❤love❤Python❤and❤java❤and❤c❤and❤lixiaolong
进行join合并时,要注意可迭代类型中全部元素都要是字符串类型,否则无法合并
print(‘❤’.join(list2)) # TypeError: sequence item 0: expected str instance, int found
7、字符串转换
-
capitalize:将字符串首字母大写,其余字母小写
-
title: 将字符串中每个单词首字母大写(任何非字母字符都可以作为单词分隔符)
-
upper:将字符全部变为大写
-
lower:将字符全部变为小写
字符串中各种大小写转换
str1 = ‘hello woRld aNd Python’
capitalize 将字符串的第一个字母大写,同时讲其余全部字母小写, 对数字和汉字等不做处理
print(str1.capitalize()) # Hello world and python
title 将所有的单词首字母大写,其余字母变为小写
在Python中怎样对单词进行辨别, 非字母字符都可以作为分隔符
str2 = ‘hello中国python’
print(str1.title()) # Hello World And Python
print(str2.title()) # Hello中国Python
upper()将数据全部变为大写
print(str1.upper()) # HELLO WORLD AND PYTHON
lower()将字符全部变为小写
print(str1.lower()) # hello world and python
8、字符串两侧指定字符删除
-
strip:删除字符串两侧的指定字符
-
rstrip:删除字符串右侧的制定字符
-
lstrip:删除字符串左侧的指定字符
strip 去重字符串左右两侧指定字符
str1 = ’ hello python\t \n ’
strip中如果不传参数,则去除字符串左右两侧的空白(包括空格,换行,制表位等)
print(str1.strip()) # hello python
格式:字符串.strip(self(不传值), chars(可以传一个字符或多个字符))
str2 = ‘$ h e l l o P y t h o n hello Python helloPython$’
删除字符串左右两侧的$符号
删除一个指定字符
print(str2.strip(‘$’)) # hello Python
删除多个指定字符
str3 = ‘13214123123hello Python12314123123123’
print(str3.strip(‘12’)) # 314123123hello Python12314123123123
print(str3.strip(‘123’)) # 4123123hello Python12314
print(str3.strip(‘4231’)) # hello Python
结论:如果在strip中填写多个字符,等号左右两侧出现的字符如果在传入的字符串中,则删除,否则保留
传入多个字符时,和传入的顺序没有任何关系,只要是传入的字符就不能出现在指定字符串左右两侧,直到出现不属于其内容的字符删除结束
‘’’
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
‘’’
rstrip 删除字符串右侧指定的字符
print(str3.rstrip(‘1234’))
lstrip 删除字符串左侧指定的字符
print(str3.lstrip(‘1234’))
TypeError: lstrip arg must be None or str
strip, lstrip, rstrip 只能接收str类型参数或者None
print(str3.lstrip(1234))
9、字符串对齐
-
rjust:右对齐
-
ljust:左对齐
-
cneter: 居中对齐
str1 = ‘python’
rjust 右对齐
字符在右侧,不足位置用空格补齐
如果不指定填充字符,则自动用空格补齐
print(str1.rjust(10)) # python
格式:字符串.rjust(self(不用传值), width(字符宽度), fillchar(填充字符))
指定填充字符 为$
print(str1.rjust(10, 'KaTeX parse error: Expected 'EOF', got '#' at position 6: ')) #̲$$$python
ljust 左对齐
和rjust使用方式一致,只不过字符在左侧
print(str1.ljust(10)) # python
print(str1.ljust(10, 'KaTeX parse error: Expected 'EOF', got '#' at position 6: ')) #̲ python$$$
center 居中对齐
格式: center(self(不用传值), width(字符宽度), fillchar(填充字符))
print(str1.center(10)) # python
print(str1.center(10, ‘*’)) # python
10、字符串判断
最后
不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~
给大家准备的学习资料包括但不限于:
Python 环境、pycharm编辑器/永久激活/翻译插件
python 零基础视频教程
Python 界面开发实战教程
Python 爬虫实战教程
Python 数据分析实战教程
python 游戏开发实战教程
Python 电子书100本
Python 学习路线规划
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!