Python使用正则表达式过滤或替换HTML标签的方法详解


Posted in Python onSeptember 25, 2017

本文实例讲述了Python使用正则表达式过滤或替换HTML标签的方法。分享给大家供大家参考,具体如下:

python正则表达式关键内容:

python正则表达式转义符:

. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
\W 匹配任意不是字母,数字,下划线,汉字的字符
\S 匹配任意不是空白符的字符
\D 匹配任意非数字的字符
\B 匹配不是单词开头或结束的位置
[^x] 匹配除了x以外的任意字符
[^aeiou] 匹配除了aeiou这几个字母以外的任意字符

常用的python正则表达式限定符代码/语法说明:

*重复零次或更多次
+重复一次或更多次
?重复零次或一次
{n}重复n次
{n,}重复n次或更多次
{n,m}重复n到m次
关于python正则表达式命名组:
命名组:(?P<name>.....)
这篇文章里面还提到了界定( 问号开头,前向则有个'<'号,非则有个'!' 号 ):
前向界定 (?<=…)
后向界定 (?=…)
前向非界定 (?<!....)
后向非界定 (?!.....)

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*script\s*>', re.I) # Script
  re_style = re.compile('<\s*style[^>]*>[^<]*<\s*/\s*style\s*>', re.I) # style
  re_br = re.compile('<br\s*?/?>') # 处理换行
  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('', htmlstr, 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
Python 相关文章推荐
python中正则表达式的使用详解
Oct 17 Python
python基于socket实现网络广播的方法
Apr 29 Python
Python删除windows垃圾文件的方法
Jul 14 Python
值得收藏的10道python 面试题
Apr 15 Python
python lxml中etree的简单应用
May 10 Python
Python容器使用的5个技巧和2个误区总结
Sep 26 Python
Python FFT合成波形的实例
Dec 04 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
Dec 11 Python
Pytorch之保存读取模型实例
Dec 30 Python
Python字符编码转码之GBK,UTF8互转
Feb 09 Python
python3利用Axes3D库画3D模型图
Mar 25 Python
python的数学算法函数及公式用法
Nov 18 Python
Python实现的破解字符串找茬游戏算法示例
Sep 25 #Python
Python实现破解猜数游戏算法示例
Sep 25 #Python
Python基于identicon库创建类似Github上用的头像功能
Sep 25 #Python
python3使用requests模块爬取页面内容的实战演练
Sep 25 #Python
python中通过预先编译正则表达式提高效率
Sep 25 #Python
python之Character string(实例讲解)
Sep 25 #Python
python利用正则表达式搜索单词示例代码
Sep 24 #Python
You might like
PHP mcrypt可逆加密算法分析
2011/07/19 PHP
php策略模式简单示例分析【区别于工厂模式】
2019/09/25 PHP
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.3
2008/03/22 Javascript
Jquery从头学起第四讲 jquery入门教程
2010/08/01 Javascript
浅谈javascript的原型继承
2012/07/25 Javascript
JavaScript中的slice()方法使用详解
2015/06/06 Javascript
浅析JS动态创建元素【两种方法】
2016/04/20 Javascript
js绘制购物车抛物线动画
2020/11/18 Javascript
vue2.x 父组件监听子组件事件并传回信息的方法
2017/07/17 Javascript
vue如何判断dom的class
2018/04/26 Javascript
vue 项目接口管理的实现
2019/01/17 Javascript
通过Kettle自定义jar包供javascript使用
2020/01/29 Javascript
JS图片预加载三种实现方法解析
2020/05/08 Javascript
Python 列表list使用介绍
2014/11/30 Python
深入理解Python中命名空间的查找规则LEGB
2015/08/06 Python
使用pyecharts无法import Bar的解决方案
2020/04/23 Python
python中利用await关键字如何等待Future对象完成详解
2017/09/07 Python
python如何使用正则表达式的前向、后向搜索及前向搜索否定模式详解
2017/11/08 Python
MAC中PyCharm设置python3解释器
2017/12/15 Python
python实现kMeans算法
2017/12/21 Python
numpy实现合并多维矩阵、list的扩展方法
2018/05/08 Python
解决tensorflow由于未初始化变量而导致的错误问题
2020/01/06 Python
Python unittest工作原理和使用过程解析
2020/02/24 Python
基于tf.shape(tensor)和tensor.shape()的区别说明
2020/06/30 Python
python如何绘制疫情图
2020/09/16 Python
Python requests HTTP验证登录实现流程
2020/11/05 Python
python3中布局背景颜色代码分析
2020/12/01 Python
乌克兰电子产品和家用电器购物网站:TOUCH
2019/08/09 全球购物
英国领先的在线高尔夫商店:Gamola Golf
2019/11/16 全球购物
汽车技术服务与营销专业推荐信
2013/11/29 职场文书
七年级地理教学反思
2014/01/26 职场文书
《乡下孩子》教学反思
2014/04/17 职场文书
党员干部作风建设思想汇报范文
2014/10/25 职场文书
2014年党风廉政工作总结
2014/12/03 职场文书
2015元旦家电促销活动策划方案
2014/12/09 职场文书
python之np.argmax()及对axis=0或者1的理解
2021/06/02 Python