先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Python全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024c (备注Python)
正文
re.match 在起始位置匹配
re.match 尝试从字符串的起始位置匹配一个模式。
函数语法:
re.match(pattern, string, flags=0)
参数说明:
| 参数 | 说明 |
| :-- | :-- |
| pattern | 匹配的正则表达式 |
| string | 待匹配的字符串 |
| flags | 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。 |
若在起始位置匹配成功,返回 re.Match 对象。若不成功,则返回 None。
re.Match 对象:点击查看文末解释。
标志位:点击查看文末解释。
返回的匹配对象的对象方法:
| re.Match 匹配对象方法 | 说明 |
| :-- | :-- |
| group(group=0) | 1. 返回匹配到的字符串。
2. 若指定 group,则返回指定的分组 |
| groups() | 返回一个元组,包含所有分组 |
| start(group=0)
end(group=0) | 1. 返回匹配到的字符串的起始或结束位置。
2. 若指定 group,则返回指定的分组的起始或结束位置 |
| span(group=0) | 1. 返回一个二项元组,包含匹配到的字符串开始、结束的位置
相当于 (start(group),end(group))
2. 若指定 group,则返回指定分组的位置 |
示例 1:
s = ‘David 612 - Python’
r = re.match(r’(.+) (\d+)',s) # 在表达式中,用小括号()括起来的即为分组
r # 函数返回的是 re.Match 对象
<re.Match object; span=(0, 9), match=‘David 612’>
r.group() # 返回匹配到的字符串
‘David 612’
r.group(1) # 返回第一个分组,分组的第一个下标为1,而不是0
‘David’
r.groups() # 返回所有分组
(‘David’, ‘612’)
r.span() # 返回匹配到的字符串位置
(0, 9)
r.span(2) # 返回第二个分组的位置
(6, 9)
开始位置:字符串第一个字符的下标
结束位置:字符串最后一个字符的下标 +1
示例 2:
s = ‘Python’
re.match(‘PyPy’,s)
None
re.fullmatch 匹配整个字符串
与 re.match 类似,但是是匹配整个字符串。
re.search 搜索整个字符串
re.search() 扫描整个字符串并返回第一个成功的匹配。
函数语法:
re.search(pattern, string, flags=0)
参数说明:
| 参数 | 说明 |
| :-- | :-- |
| pattern | 匹配的正则表达式 |
| string | 待匹配的字符串 |
| flags | 标志位,用于控制正则表达式的匹配方式 |
若匹配成功,返回 re.Match 对象。若不成功,则返回 None。
re.sub 替换
re.sub 用于替换字符串中的匹配项。
函数语法:
re.sub(pattern, repl, string, count=0, flags=0)
参数说明:
| 参数 | 说明 |
| :-- | :-- |
| pattern | 正则中的模式字符串 |
| repl | 替换的字符串,也可为一个函数 |
| string | 待替换的字符串 |
| count | 替换的最大次数,默认 0 表示替换所有 |
| flags | 编译时用的匹配模式,数字形式 |
若匹配成功,则返回替换后的字符串。
s = ‘Python2.2.4’
re.sub(‘\d’,‘3’,s) # 将所有数字替换为3
‘Python3.3.3’
repl 可以为一个函数。示例:
s = ‘Python2’
f = lambda m:str(int(m.group(1))+1)
re.sub(r’(\d)',f,s) # 将所有匹配到的数字+1
‘Python3’
re.split 切割
re.split 按照能够匹配的子串将字符串分割后返回列表。
函数语法:
re.split(pattern, string[, maxsplit=0, flags=0])
参数说明:
| 参数 | 说明 |
| :-- | :-- |
| pattern | 匹配的正则表达式 |
| string | 待匹配的字符串 |
| maxsplit | 分隔次数,默认为 0,不限制次数 |
| flags | 标志位,用于控制正则表达式的匹配方式 |
该函数返回一个列表。
示例:
s = ‘Python1,Python2,Python3’
re.split(r’\d’,s) # 以数字切割
[‘Python’, ‘,Python’, ‘,Python’, ‘’]
re.findall 查找所有
匹配正则表达式所匹配的所有子符串。
函数语法:
re.findall(pattern, string, flags=0)
参数说明:
| 参数 | 说明 |
| :-- | :-- |
| pattern | 匹配的正则表达式 |
| string | 待匹配的字符串 |
| flags | 标志位,用于控制正则表达式的匹配方式 |
在字符串中找到正则表达式所匹配的所有子符串,返回一个列表,包含匹配到的所有字符串。
若匹配的正则表达式中含分组,则只会返回分组内容。
如果没有找到匹配的,则返回空列表。
示例:
s = ‘Python1,Python2,Python3’
re.findall(r’\d’,s)
[‘1’, ‘2’, ‘3’] # 返回匹配到的所有字符串
re.findall(‘a’,s)
[] # 无匹配项,返回空列表
注意: match 和 search 是匹配一次,而 findall 匹配所有。
re.finditer 查找所有并返回迭代器
和 re.findall 类似,在字符串中找到正则表达式所匹配的所有字符串,并把它们作为一个迭代器返回。
函数语法:
re.finditer(pattern, string, flags=0)
re.finditer 返回的是 迭代器,包含匹配的 re.Match 对象 而不是字符串。
re.finditer(r’\d’,s)
<callable_iterator object at 0x01C91898>
r = re.finditer(r’\d’,s)
r
<callable_iterator object at 0x01C918C8>
for t in r:
print(t)
print(t.group)
<re.Match object; span=(6, 7), match=‘1’>
<built-in method group of re.Match object at 0x01CABA68>
<re.Match object; span=(14, 15), match=‘2’>
<built-in method group of re.Match object at 0x01C763A0>
<re.Match object; span=(22, 23), match=‘3’>
<built-in method group of re.Match object at 0x01CABA68>
re.compile 生成表达式对象
re.compile 函数用于编译正则表达式,生成一个正则表达式(re.Regex)对象,供 match 和 search 等函数使用。
re.Regex 对象:文末解释,点击跳转,或点击上方蓝色超链接跳转。
函数语法:
re.compile(pattern[, flags])
参数说明:
| 参数 | 说明 |
| :-- | :-- |
| pattern | 字符串形式的正则表达式 |
| flags | 标志位,用于控制正则表达式的匹配方式 |
示例:
p = re.compile(r’\d’)
s = ‘Python1,Python2,Python3’
p.match(s,pos=0,endpos=20) # 从第一个开始匹配,不匹配,返回 None
None
pos 为开始匹配的位置,默认为 0,
endpos 为结束匹配的位置,默认为字符串总长
这两个参数只有在 re.Regex 对象的方法才有,即用 re.compile 生成的对象
p.match(s,6,20) # 从第六个开始匹配,匹配成功,返回 re.Match 对象
<re.Match object; span=(6, 7), match=‘1’>
p.search(s,0,10)
<re.Match object; span=(6, 7), match=‘1’>
p.findall(s,0,30)
[‘1’, ‘2’, ‘3’]
p.finditer(s,0,30)
<callable_iterator object at 0x01C14610>
p.sub(‘5’,s)
‘Python5,Python5,Python5’
p.split(s)
[‘Python’, ‘,Python’, ‘,Python’, ‘’]
re.Match 对象
对象方法:
| re.Match 匹配对象方法 | 说明 |
| :-- | :-- |
| group(group=0) | 1. 返回匹配到的字符串。
2. 若指定 group,则返回指定的分组 |
| groups() | 返回一个元组,包含所有分组 |
| start(group=0)
end(group=0) | 1. 返回匹配到的字符串的起始或结束位置。
2. 若指定 group,则返回指定的分组的起始或结束位置 |
| span(group=0) | 1. 返回一个二项元组,包含匹配到的字符串开始、结束的位置
相当于 (start(group),end(group))
2. 若指定 group,则返回指定分组的位置 |
示例:
s = ‘David 612 - Python’
r = re.search(r’(\d+).*§',s)
r
<re.Match object; span=(6, 13), match=‘612 - P’> # 返回 re.Match 对象
r.group() # 获取匹配到的字符串
‘612 - P’
r.group(1) # 获取第一个分组
‘612’
r.groups() # 获取所有分组
(‘612’, ‘P’)
r.start() # 获取字符串开始位置
6
r.start(1) # 获取第一个分组开始位置
6
r.end() # 获取字符串结束位置
13
r.end(1) # 获取第一个分组结束位置
9
获取字符串位置
r.span()
(6, 13)
(r.start(),r.end())
(6, 13)
获取第二个分组的位置
r.span(2)
(12, 13)
(r.start(2),r.end(2))
(12, 13)
re.Regex 对象
re.compile 生成的对象,供 match 和 search 等函数使用。
正则表达式可以包含一些可选标志修饰符来控制匹配的模式。
修饰符被指定为一个可选的标志。
多个标志可以通过按位 OR(|) 它们来指定。
如 re.I | re.M 被设置成 I 和 M 标志
(1)Python所有方向的学习路线(新版)
这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
最近我才对这些路线做了一下新的更新,知识体系更全面了。
(2)Python学习视频
包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。
(3)100多个练手项目
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ac7b0252212e0583de84676b8a893c1e.png)
(2)Python学习视频
包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。
(3)100多个练手项目
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
[外链图片转存中…(img-TfJROGxD-1713443940090)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!