Python使用re模块实现信息筛选的方法
本篇章节讲解Python使用re模块实现信息筛选的方法。分享给大家供大家参考,具体如下: 背景 平时工作中,我们经常会处理大量的元数据(Raw Data),而一般的文件编辑器只能一次查询一个关键字,这就难以连续的分析元数据,比如分析产品日志文件(log),日志可能包括很多information级别的信息,这些一般是我们不太关心的,我们主要关心的是一些特殊的调试(Debug)级别的信息,所以就有必要根据很多关键字筛选出来日志文件中我们所关系的信息,这样筛选出来的日志文件不仅具有连续性,而且易读性会非常好。 解决方案 re是Python自带的正则表达式库文件,为字符串的匹配筛选提供了极大的便利,本文就是利用re来进行日志文件的信息筛选。首先,简单来看一下re中的主要函数: 1. >>> import re >>> re.compile('[abc]+') re.compile('[abc]+') >>> re.compile(test) Traceback (most recent call last): File "<stdin>",line 1,in <module> NameError: name 'test' is not defined >>> 2. >>> import re >>> test = re.compile('[abc]+') >>> test.match('dabc') >>> test.match('babc') <_sre.SRE_Match object; span=(0,4),match='babc'> test是一个以a或b或c开头的正则表达式编译对象,而match是从目标字符串的开头进行匹配,所以第一个目标字符串“dabc”不符合正则表达式规则,所以返回None;第二个目标字符串可以正常匹配输出匹配对象(起始位置,匹配内容),由于match每次都从目标字符串的开头进行匹配,所以如果有匹配字符串,其开始位置始终为0. 3. >>> import re >>> test = re.compile('[abc]+') >>> test.search('dabc') <_sre.SRE_Match object; span=(1,match='abc'> >>> 这时用search就可以匹配a,b,c开头的字符串了 4. >>> test = re.compile('w+@163.com') >>> test.findall(r"alvin@163.comtest1234@163.comnotvalid@gmail.com") ['alvin@163.com','test1234@163.com'] 当然,re中还有很多其他的函数可供大家使用,大家可以去查阅python官方文档。 其次,介绍几个正则表达式常用的符号: 1. *: 表示匹配其前面字符0或多次 其他的正则表达式的表示也可去官网文档查看。 最后,上一下这个简单的筛选程序: import re source = 'GCM.txt' target = 'g2s.txt' #一级筛选 raw_compile = re.compile(r"<g2s:g2sMessage.*?</g2s:g2sMessage>",re.DOTALL) #二级筛选 messagelevel_compile = re.compile(r"<igtLicensing.*|<g2s:idReader.*",re.DOTALL) #二级筛选 egmlevel_compile = re.compile(r"IGT_00012E2335AA.*",re.DOTALL) def FilterG2SMessage(): fr = open(source) content = fr.read() fr.close() f = open(target,'w') g2sItems = raw_compile.findall(content) for g2s in g2sItems: iscaredG2S = messagelevel_compile.search(g2s) isCaredEGM = egmlevel_compile.search(g2s) if iscaredG2S and isCaredEGM: f.write(g2s+'n') else: pass f.close() FilterG2SMessage() 程序很简单,在筛选的过程中大家可以先分析一下筛选的级别,可以逐级筛选。 总结: re不仅仅提供了正则表达式的匹配,而且提供了一些批量处理的函数,比如 PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用: JavaScript正则表达式在线测试工具: 正则表达式在线生成工具: 更多关于Python相关内容可查看本站专题:《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》 希望本文所述对大家Python程序设计有所帮助。 您可能感兴趣的文章:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |