python – 匹配多个正则表达式组并删除它们
发布时间:2020-12-20 11:12:06 所属栏目:Python 来源:网络整理
导读:我收到了一个文件,我想从中提取有用的数据.该文件的格式如下: LINE: 1TOKENKIND: somedataTOKENKIND: somedataLINE: 2TOKENKIND: somedataLINE: 3 等等… 我想要做的是删除LINE:和行号以及TOKENKIND:所以我只剩下一个字符串,其中包含’somedata somedate
我收到了一个文件,我想从中提取有用的数据.该文件的格式如下:
LINE: 1 TOKENKIND: somedata TOKENKIND: somedata LINE: 2 TOKENKIND: somedata LINE: 3 等等… 我想要做的是删除LINE:和行号以及TOKENKIND:所以我只剩下一个字符串,其中包含’somedata somedate somedata …’ 我正在使用Python来执行此操作,使用正则表达式(我不确定是否正确)来匹配我要删除的文件的位. 我的问题是,如何让Python匹配多个正则表达式组并忽略它们,将我的正则表达式与我的输出字符串不匹配的任何内容添加到我的输出字符串中?我当前的代码如下所示: import re import sys ignoredTokens = re.compile(''' (?P<WHITESPACE> s+ ) | (?P<LINE> LINE:s[0-9]+ ) | (?P<TOKEN> [A-Z]+: ) ''',re.VERBOSE) tokenList = open(sys.argv[1],'r').read() cleanedList = '' scanner = ignoredTokens.scanner(tokenList) for line in tokenList: match = scanner.match() if match.lastgroup not in ('WHITESPACE','LINE','TOKEN'): cleanedList = cleanedList + match.group(match.lastindex) + ' ' print cleanedList 解决方法import re x = '''LINE: 1 TOKENKIND: somedata TOKENKIND: somedata LINE: 2 TOKENKIND: somedata LINE: 3''' junkre = re.compile(r'(s*LINE:s*d*s*)|(s*TOKENKIND:)',re.DOTALL) print junkre.sub('',x) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |