正则表达式在过滤清洗小规模数据的过程中用的最多,但是随着数据量的增大,正则表达式好像没有了剩下足够的能量。[阅读全文]正则表达式在10k词库中查找15k关键词的时间差不多是0.165秒。但Flashtext只需要0.002秒。所以在这个问题上Flashtext比正则表达式快大约82倍。从上面示例图的性能对比可以发现,随着我们需要处理的字符越来越多,正则表达式的处理速度几乎呈线性增长。然而,Flashtext几乎是一个常量。1.准备flashtext环境。也可以通过pip或其他方法安装flashtext。这里默认使用清华大学的镜像站。pipinstallflashtext-ihttps://pypi.tuna.tsinghua.edu.cn/simple准备好flashtext环境后,我们来看看flashtext的重要使用流程,帮助我们更好的完成数据清洗操作。2、添加关键词这里添加关键词时,将单个关键词添加到关键词词库中,使用add_keyword函数添加。第一个参数表示要添加的关键字,第二个参数表示第一个关键字的别名。如果找到关键字,它将显示为别名。如果第二个参数没有作为别名使用,它仍然会显示原来的名字。fromflashtextimportKeywordProcessor#初始化关键字库processorprocessor=KeywordProcessor()#普通方式添加关键字processor.add_keyword('Python')#分别以别名方式添加关键字processor.add_keyword('Scala','Java')已通过两种方式将所需关键字添加到同义词库处理器中。3.提取关键词上一步添加关键词,此时词库处理器中就有关键词信息,然后使用extract_keywords提取关键词。#从字符串中提取关键字信息found=processor.extract_keywords('IlikePythonandScala.')#Resultprint(found)#['Python','Java']结果出来了,和我们预想的一样,Scala也显示为Java。4.替换关键字replace_keywords函数用于替换关键字。前提是词库中有别名的词可以替换,就像上面的Scala显示为Java一样。替换字符串中的Scala关键字。由于Scala对应的别名是Java,所以字符串中的Scala应该换成Java。replaced=processor.replace_keywords('IlikeScala.')#Resultprint(replaced)#IlikeJava.#Scala真的被Java取代了。5.获取所有关键词有时,您可能不记得在KeywordProcessor词库处理器中添加了哪些关键词。这时候可以使用get_all_keywords函数获取当前所有的关键字。all_keywords=processor.get_all_keywords()#resultprint(all_keywords)#{'python':'Python','scala':'Java'}6.批量添加关键字当关键字库需要更多关键字时,可以批量添加通过列表或字典。对应的函数是add_keywords_from_list和add_keywords_from_dict函数。#初始化一个字典,用于批量添加dict_={'java':['java_ee','java_se','java_me'],'python':['pandas','all']}#通过字典来添加关键词batchesprocessor.add_keywords_from_dict(dict_)#从批量添加的关键字中匹配关键字result=processor.extract_keywords('寻找java_ee和pandas.')#Resultprint(result)#['java','python']#添加关键字inbatchesbylistprocessor.add_keywords_from_list(['scala','python','scala','go'])#通过get_all_keywords查看所有关键词all_keywords=processor.get_all_keywords()#resultprint(all_keywords)#{'python':'python','pandas':'python','scala':'scala','java_ee':'java','java_se':'java','java_me':'java','all':'python','go':'go'}发现所有的关键词都已经添加到词库处理器中,重复的不会再添加了。7、批量删除关键词词库处理器中批量删除关键词的方式也有两种,一种是列表,一种是字典。对应的函数分别是remove_keywords_from_list和remove_keywords_from_dict函数。#从列表中批量删除关键字processor.remove_keywords_from_list(['python','java_ee','java_me'])#从字典中批量删除关键字processor.remove_keywords_from_dict({'python':['pandas','all']})#通过get_all_keywords查看所有关键字all_keywords=processor.get_all_keywords()#resultprint(all_keywords)#{'scala':'scala','java_se':'java','go':'go'}发现所有关键字需要删除的已删除。8、执行效率对比为了更震撼的展示效果,我找了两张flashtext在搜索和替换关键词过程中的效率对比图,一目了然。flashtext,正则表达式搜索效率对比flashtext,正则表达式搜索替换对比【之前很精彩】一个帮助函数解决所有python文档信息查看...python自定义异常/raise关键字抛出异常python本地音乐播放工具制作过程(附完整源码)code)自动化工具:PyAutoGUI的鼠标键盘控件,解放双手的利器!你见过程序员送的生日蛋糕吗?
