python 正则过滤中文、英文、数字、特殊字符demo
一般情况下,模型不能百分百实现完成功能情况下,需要采用特定trick二次升级,正则是一个重要的手段,之前也有总结,现将最近完成测试代码总结如下,希望能够帮到你解决问题。
import re # 匹配中文 CN_PATTERN = re.compile(u'[\u4e00-\u9fa5]') # 匹配英文和数字 NUM_PATTERN = re.compile(r'[A-Za-z0-9]+') # 匹配关键词 KEYWORDS_PATTERN = re.compile(r'新疆大学|世界|外汇|中国') # 特殊自负 SPECIAL_CHAR_PATTERN = re.compile(r'[’!"#$%&\'()*+,-./:;<=>?@,。?★、…【】《》?“”‘’!\[\\\]^_`{|}~]+') def regular_fun(s): cn = CN_PATTERN.findall(s) num = NUM_PATTERN.findall(s) words = KEYWORDS_PATTERN.findall(s) print(cn, num, words) if __name__ == '__main__': t1 = r'this boy chincese name, NLPer, 18 years old' t2 = r'当前测试数据全是中文' t3 = r'current data is all english!' t4 = r'ddddddddddddddddddddddddddddddddddddddddddddddddddddddddd这是一个对用户预填垃圾信息过滤方案' t5 = r'新疆大学(Xinjiang University),简称“新大”,位于新疆维吾尔自治区首府乌鲁木齐,是世界一流大学建设高校(B类)' t6 = r'%^&&*^*(^&*(%&%$#$@#%^#' regular_fun(t1) regular_fun(t2) regular_fun(t3) regular_fun(t4) regular_fun(t5) regular_fun(t6) print(SPECIAL_CHAR_PATTERN.findall(t3))
这里强调一点,对于关键词的应用大家不要小看了,合理的应用会给精度、用户体验等都带来提升。不要怕关键词多,同时对于关键词归类、排序等(对于有序的数值,查找起来是不是会效率更高?同理),借鉴阿里文娱一张图说明下:
时刻记着自己要成为什么样的人!