Python使用正则表达式过滤或替换HTML标签的方法详解
本篇章节讲解Python使用正则表达式过滤或替换HTML标签的方法。分享给大家供大家参考,具体如下: python正则表达式关键内容: python正则表达式转义符: . 匹配除换行符以外的任意字符 常用的python正则表达式限定符代码/语法说明: *重复零次或更多次 Python通过正则表达式去除(过滤)HTML标签示例代码 #-*- coding:utf-8 -*- import re ##过滤HTML中的标签 # 将HTML中标签等信息去掉 # @param htmlstr HTML字符串. def filter_tags(htmlstr): # 先过滤CDATA re_cdata = re.compile("//<! CDATA[[>]∗// ]>",re.I) #匹配CDATA re_script = re.compile('<s*script[^>]*>[^<]*<s*/s*scripts*>',re.I) # Script re_style = re.compile('<s*style[^>]*>[^<]*<s*/s*styles*>',re.I) # style re_br = re.compile('<brs*?/?>') # 处理换行 re_h = re.compile('</?w+[^>]*>') # HTML标签 re_comment = re.compile('<!--[^>]*-->') # HTML注释 s = re_cdata.sub('',htmlstr) # 去掉CDATA s = re_script.sub('',s) # 去掉SCRIPT s = re_style.sub('',s) # 去掉style s = re_br.sub('n',s) # 将br转换为换行 s = re_h.sub('',s) # 去掉HTML 标签 s = re_comment.sub('',s) # 去掉HTML注释 # 去掉多余的空行 blank_line = re.compile('n+') s = blank_line.sub('n',s) s = replaceCharEntity(s) # 替换实体 return s ##替换常用HTML字符实体. # 使用正常的字符替换HTML中特殊的字符实体. # 你可以添加新的实体字符到CHAR_ENTITIES中,处理更多HTML字符实体. # @param htmlstr HTML字符串. def replaceCharEntity(htmlstr): CHAR_ENTITIES = {'nbsp': ' ','160': ' ','lt': '<','60': '<','gt': '>','62': '>','amp': '&','38': '&','quot': '"''"','34': '"',} re_charEntity = re.compile(r'?(?P<name>w+);') sz = re_charEntity.search(htmlstr) while sz: entity = sz.group() # entity全称,如> key = sz.group('name') # 去除&;后entity,如>为gt try: htmlstr = re_charEntity.sub(CHAR_ENTITIES[key],htmlstr,1) sz = re_charEntity.search(htmlstr) except KeyError: # 以空串代替 htmlstr = re_charEntity.sub('',1) sz = re_charEntity.search(htmlstr) return htmlstr def repalce(s,re_exp,repl_string): return re_exp.sub(repl_string,s) if __name__ == '__main__': s = file('test.html').read() news = filter_tags(s) print news PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用: JavaScript正则表达式在线测试工具: 正则表达式在线生成工具: 更多关于Python相关内容可查看本站专题:《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》 希望本文所述对大家Python程序设计有所帮助。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |