利用python进行数据分析 —— python正则表达式(持续更新中!)

我是第一次接触机器学习,所以对于机器学习的学习过程研究比较迷茫,最终选定跟着一个B站博主 致敬大神 学习机器学习的基础课程。她的主页有关于机器学习和深度学习的学习顺序以及预备知识等等,比较适合我这种刚入门,或者可以跟随我的博客进行学习。

利用python进行数据分析 —— python基础知识进阶

我之前有一些python的基础,所以直接从这本书开始学习一些python进阶的基础知识。这本书不需要全部都看,博主有视频合集,可以直接选择跟着博主视频学习一些必要的基础知识,通俗易懂!

在这里插入图片描述
这本书的学习笔记,可以参考该博主的 GitHub ,笔记内容真的很详细!!!
我的这篇文章主要针对一些比较复杂和陌生的内容进行复盘。

重点笔记:正则表达式

re.match 匹配开头

功能:匹配开头,如果匹配返回某个值,如果不匹配返回None
通式:re.match(pattern, string, flag=0)
pattern:正则表达式如a,如\d代表0-9的数字
string:要匹配的字符串如abc123
flags:标志位,设置匹配方式,如是否区分大小写等

import re
print(re.match('b','abc123'))

None
import re
print(re.match('a','abc123'))

<re.Match object; span=(0, 1), match='a'>
#span是指匹配范围为(0,1)

在这里插入图片描述

start() 返回匹配开始的位置

end() 返回匹配结束的位置

span() 返回一个元组包含匹配 (开始,结束) 的位置,span就是范围的意思life span寿命

group() 返回被 RE 匹配的字符串

re.search 全文匹配

功能:扫描整个字符串,匹配成功,返回第一个匹配成功的对象,否则返回None
通式:re.search(pattern, string, flags=0)

在这里插入图片描述

re.sub 替换删除

功能:substitude缩写,替换匹配项,用空去替换,那就是删除

通式:re.sub(pattern, repl, string, count=0, flags=0)

repl : 替换的字符串,也可为一个函数

count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配

在这里插入图片描述

re.compile 编译正则

功能:编译正则表达式,生成一个pattern,供 match()search() 使用

通式:re.compile(pattern, flags)

在这里插入图片描述

findall 返回列表

功能:全字符串找,匹配,并返回一个列表,否则返回空列表。

通式:findall(string[, pos[, endpos]])

  • string : 待匹配的字符串。

  • pos : 可选参数,指定字符串的起始位置,默认为 0。

  • endpos : 可选参数,指定字符串的结束位置,默认为字符串的长度

在这里插入图片描述

finditer 返回迭代器

功能:类似findall,只不过返回迭代器

通式:re.finditer(pattern, string, flags=0)

在这里插入图片描述

re.split 分割返回列表

功能:按照能够匹配的子串将字符串分割后返回列表

通式:re.split(pattern, string [, maxsplit=0, flags=0])

  • maxsplit:分隔次数,maxsplit=1 分隔一次,默认为 0,不限制次数
import re
pattern = re.compile(r'\W+')
result1 = re.split(pattern, '  runoob, runoob,    runoob.  ',maxsplit=0)
result2 = re.split(pattern, '  runoob, runoob,    runoob.  ',maxsplit=1)
print(result1)
print(result2)

# \W非字母数字及下划线
# 也就是字母数字下划线留着
# ,空格不能要,见到分隔
# .也不能要,见到分隔
# 分隔一次,列表里就有一个元素,就有一个,
# 所以开头结尾都有个空
['', 'runoob', 'runoob', 'runoob', '']
['', 'runoob, runoob,    runoob.  ']

(?P…) 分组匹配

功能:分组匹配,一对值

通式:((?P 《key》 \pattern) 得到一组对应的值,key:匹配的字符

使用groupdict函数可以变成字典

import re
s = '1102231990xxxxxxxx'
res = re.search('(?P<province>\d{3})(?P<city>\d{3})(?P<born_year>\d{4})',s)
print(res.groupdict())


{'province': '110', 'city': '223', 'born_year': '1990'}

正则表达符号、修饰符

通配符1 ^:字符串的开头

在这里插入图片描述

通配符2 $:字符串的结尾

在这里插入图片描述

通配符3 .: 任何字符,除了换行

在这里插入图片描述

通配符4 |:或

在这里插入图片描述

通配符5 {}: 明确数量

1

通配符6 []: 一系列符号

在这里插入图片描述

通配符7 ():一个表达部分的逻辑分组

在这里插入图片描述

通配符8 * :0个或多个前面的字符,贪婪模式

在这里插入图片描述

通配符9 +:1个或多个前面的字符

在这里插入图片描述

通配符10 :0个或多个前面的字符,非贪婪模式

请添加图片描述

通配符11 \:匹配是否有特殊符号

在这里插入图片描述

[^aeiou]:匹配不在这里的单个字母

在这里插入图片描述

[0-9a-fA-F]:用 - 可以指明一个连续的字符范围

请添加图片描述

\d:十进制数字,相当于[0-9],其他进制不行

在这里插入图片描述

\D:非数字,相当于[^0-9],其他进制也不包括

在这里插入图片描述

\w:任何词汇的字符,相当于[a-zA-Z_0-9]

在这里插入图片描述

\W:非词汇字符,相当于[^a-zA-Z_0-9]

在这里插入图片描述

\s:所有的空白字符换页,换行,回车,Tab,纵向Tab,相当于[ \f\n\r\t\v]

在这里插入图片描述

\S:所有的非空白字符,相当于[^ \f\n\r\t\v]

在这里插入图片描述

不熟悉的知识点:匿名函数Lambda

匿名函数,顾名思义就是不需要具体定义函数名的函数,仅单条语句组成,该语句的结果就是返回值。它是通过lambda关键字定义的,这个关键字没有别的含义,仅仅是说“我们正在声明的是一个匿名函数”。
lambda函数比编写完整的函数要少输入很多字,并且清晰很多。例如:

def func(x):
	return x*2
y = func(x)
__________________________

y = lambda x: x * 2

在这里插入图片描述

sort()函数和sorted()函数区别

sort()函数和sorted()函数,两个函数均为排序,不同的是sort()函数改变原来列表,而sorted()函数不改变原来列表,且reverse=False正序,reverse=True反序。

在这里插入图片描述
sorted()函数和lambada()函数结合
在这里插入图片描述

#根据不同字母个数排序
#foo两个字母,aaaa一个字母
strings = ['foo', 'card', 'bar', 'aaaa', 'abab']

#list(x)把foo变成列表['f','o','o'],把字符串变为列表
#set()转化为集合并去掉重复字符,为 {'f', 'o'}
#len()得到长度

strings.sorted(key = lambda x:len(set(list(x))))

不熟悉的知识点:柯里化 —— 部分参数的应用

其实就是从已有函数衍生新的函数

在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

poggioxay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值