本文实例讲述了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.....)

这篇文章里面还提到了界定( 问号开头,前向则有个'

前向界定 (?<=…)

后向界定 (?=…)

前向非界定 (?

后向非界定 (?!.....)

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(']*>[^', re.I) # Script

re_style = re.compile(']*>[^', re.I) # style

re_br = re.compile('
') # 处理换行

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': '

'gt': '>', '62': '>',

'amp': '&', '38': '&',

'quot': '"''"', '34': '"', }

re_charEntity = re.compile(r'?(?P\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

PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:

希望本文所述对大家Python程序设计有所帮助。

python读取html文件正则替换_Python使用正则表达式过滤或替换HTML标签的方法详解...相关推荐

  1. python可以使用二维元组吗_python中读入二维csv格式的表格方法详解(以元组/列表形式表示)...

    怎么去读取一个没有表头的二维csv文件(如下图所示)? 并以元组的形式表现数据: ((1.0, 0.0, 3.0, 180.0), (2.0, 0.0, 2.0, 180.0), (3.0, 0.0, ...

  2. python元组读取到列表_python中读入二维csv格式的表格方法详解(以元组/列表形式表示)...

    如何去读取一个没有表头的二维csv文件(如下图所示)? 并以元组的形式表现数据: ((1.0, 0.0, 3.0, 180.0), (2.0, 0.0, 2.0, 180.0), (3.0, 0.0, ...

  3. python二维元组_python中读入二维csv格式的表格方法详解(以元组/列表形式表示)

    如何去读取一个没有表头的二维csv文件(如下图所示)? 并以元组的形式表现数据: ((1.0, 0.0, 3.0, 180.0), (2.0, 0.0, 2.0, 180.0), (3.0, 0.0, ...

  4. python调用adb shell命令_Python之使用adb shell命令启动应用的方法详解

    Python之使用adb shell命令启动应用的方法详解 一直有一个心愿希望可以用Python做安卓自动化功能测试,在一步步摸索中,之前是用monkeyrunner,但是发现对于控件ID的使用非常具 ...

  5. python中字符串切片取奇数_Python中的字符串切片(截取字符串)的详解

    Python中的字符串切片(截取字符串)的详解 字符串索引示意图 字符串切片也就是截取字符串,取子串 Python中字符串切片方法 字符串[开始索引:结束索引:步长] 切取字符串为开始索引到结束索引- ...

  6. python2和python3分别是python的两个版本_Windows下Python2与Python3两个版本共存的方法详解...

    前言 一向用Python 3,最近研究微信公众号开发,各云平台只支持Python 2.7,想用其他版本需要自己搭建环境.而网上又搜不到Python 3开发微信公众号的资料.暂打算先使用Python 2 ...

  7. python对每一列进行归一化_对python3 一组数值的归一化处理方法详解

    1.什么是归一化: 归一化就是把一组数(大于1)化为以1为最大值,0为最小值,其余数据按百分比计算的方法.如:1,2,3.,那归一化后就是:0,0.5,1 2.归一化步骤: 如:2,4,6 (1)找出 ...

  8. python读取html文件正则替换_Python正则获取和过滤或者替换HTML标签的方法说明

    这篇文章主要介绍了Python通过正则表达式获取.过滤或者替换HTML标签的方法,感兴趣的小伙伴们可以参考一下 本文实例介绍了Python通过正则表达式获取,去除(过滤)或者替换HTML标签的几种方法 ...

  9. python读取大文件太慢_python读取大文件越来越慢的原因与解决

    背景: 今天同事写代码,用python读取一个四五百兆的文件,然后做一串逻辑上很直观的处理.结果处理了一天还没有出来结果.问题出在哪里呢? 解决: 1. 同事打印了在不同时间点的时间,在需要的地方插入 ...

最新文章

  1. 网络编程(socket)套接字之基于udp的套接字
  2. python pip升级 指向不同python版本
  3. 用户描述 和 组描述 和 远程连接
  4. learn at ease
  5. boost::hana::insert用法的测试程序
  6. Docker教程-深度学习环境配置
  7. Objective-C复制解析
  8. 计算机数据处理规模大小分为,计算机组成原理题集样稿.doc
  9. mysqldump导出数据备份 --set-gtid-purged=OFF(简明!!)
  10. Chromium 文件下载
  11. 为什么要升级PLM系统
  12. pwnable kr 之 passcode
  13. 来自Bitly的USA.gov数据,数据分析案例
  14. Origin数据设置为日期/时间的方法
  15. 分词工具与方法:jieba、spaCy等
  16. Qt Widgets
  17. Linux实现ppp拨号4G模块联网全球APN之亚美尼亚(Armenian)
  18. Android必知必会-Stetho调试工具
  19. App推广如何快速实现,这些方法能帮你
  20. Sublime text 3 汉化 POJIE版 分享

热门文章

  1. 任务型对话(一)—— NLU/SLU(意识识别和槽值填充)
  2. UVALive 3958 Weird Numbers (负进制数)
  3. 当前页面跳转网页,新打开和在本页面打开
  4. 获取前一天日期(应对跨月取日期问题)
  5. Google+强推实名制引爆不满 用户增速放缓
  6. Coolite ComboBox绑定方式
  7. 35岁老半路程序员的Python从0开始之路
  8. Spring+Mybatis+Mysql搭建分布式数据库访问框架
  9. 支持FreeMarker需要哪些JAR包?
  10. POI写Word换行