最后编辑于2022-04
百度深度学习营结营体会,关于正则表达式的一点体会
学习营算是完事了,但是完事了以后,还得写一篇结营体会,也不知道写啥好,就说一下在上课和做作业过程遇到的最大的困难吧。
虽然作业做完了,而且老师给的评分也是100分,但是自己知道,其实并没做好。最明显的就是正则表达式仅仅是一知半解,完全没有明白它的原理,所以出的结果就是评论中的表情包不管如何过滤,都一直清洗不干净。没办法最后只能使用停用词这样的笨办法,而且还没有搞干净,太夸张了。
所以事后去百度了一下正则表达式的内容,以下说一下学习到的心得体会,不一定对,大家若是看到错误请不要喷。
正则表达式是个什么东西呢?个人感觉就象是一个替代符号,这个替代符号有几种规则来约束,有点象卷积网络中的卷积核类似,计算机用这个替代符号在整个文本上逐个扫描下去,当扫描到的字符串符合这替代符号的时候,就返回这个字符串。
举个栗子:
#原文本字符串
string = "abcdefghijkabcdefghijk"
#要找字符串“cd”
s = "ka"
#那么一般情况下是怎么找的呢?
out = []
#在原文本字符串上全体扫描
for i in range(len(string) - len(s) + 1):
count = 0
for j in range(len(s)):
if string[i + j] == s[j]:
#统计匹配次数
count += 1
else:
break
if count == len(s):
#统计匹配次数,次数与目标字符串长度相等,
#就把当前字符串加入返回数组
out.append(string[i:i+len(s)])
print(out)
输出是:['ka']
而用re库是什么情况呢:
import re
#原文本字符串
string = "abcdefghijkabcdefghijk"
#要找字符串“cd”
s = "ka"
#那么一般情况下是怎么找的呢?
out = re.findall(s,string)
print(out)
输出是:['ka']
问题的关键在于,这个s的设计上,s可以是“ab”,"jk","zz',....等等,当有很多种可能时,我们可以设计一个数组,大不了再套一个循环罢了,但实际上这非常麻烦,既不实用,也非常低效。
这就是正则表达式的用处了。这个正则表达式就是用来代替这个数组进行工作的。
说简单点的,正则表达式就是对一个字符串进行描述,它有几种基本的符号,对于一个字符串而言,字符的类型,字符串的长度是其基本特性,比如说a,b,c,...A,B,C,D,....,1,2,3,...,_等等之类的,需要用[]来表示,而字符串的长度需用要用{}来表示,比如[a]{1}就是代表1个字母a,正则表达式解析后出来的是a,然后可以把这个a放到数组里去。
import re
#原文本字符串
string = "abcdefghijkabcdefghijk"
#要找字符串"[a]{1}",[]内的东西表示哪几种几是需要找的,一个[]只代表1个字符,{}表示数量
s = "[a]{1}"
#那么一般情况下是怎么找的呢?
out = re.findall(s,string)
print(out)
输出是:['a', 'a']
基本上的理解就是这样
收藏
点赞
0
个赞
请登录后评论
TOP
切换版块
来AI Studio互粉吧~等你哦~ https://aistudio.baidu.com/aistudio/personalcenter/thirdview/76563
【一些项目,有空可以fork玩玩】
训练数据太少?过拟合?一文带你领略“数据增长魔法”(上) (https://aistudio.baidu.com/aistudio/projectdetail/408059)
训练数据太少?过拟合?一文带你领略“数据增长魔法”(下) (https://aistudio.baidu.com/aistudio/projectdetail/422256)
一文帮你理解用Paddle训练模型的原理1-手写回归模型 (https://aistudio.baidu.com/aistudio/projectdetail/367090)
一文帮你理解用Paddle训练模型的原理2-权值可视化(VisualDL) (https://aistudio.baidu.com/aistudio/projectdetail/386954)
100分,学霸啊。
继续加油!共同进步!