Python使用正则表达式过滤或替换HTML标签方法介绍


本文摘自php中文网,作者巴扎黑,侵删。

这篇文章主要介绍了Python使用正则表达式过滤或替换HTML标签的方法,简单介绍了Python正则相关语法并结合具体实例形式分析了Python基于正则表达式的HTML标签过滤与替换相关操作技巧,需要的朋友可以参考下

本文实例讲述了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标签示例代码


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

#-*- 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使用正则表达式过滤或替换HTML标签方法介绍的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

Python怎么输入一个三位数,输出百位、十位和个位

基于Python 装饰器装饰类中的方法

Python中的turtle模块画图两只小羊

什么是Python自动化

Python用户评论标签匹配的解决方法

Python3学习之异常处理及文件的各种操作

Python映射类型的相关介绍

Python遍历文件夹下所有文件

Python 列表删除所有指定元素

Python什么时候出现的

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...