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

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

本文实例介绍了Python通过正则表达式获取,去除(过滤)或者替换HTML标签的几种方法,具体内容如下

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标签代码举例

1、Python通过正则表达式取html中天气信息代码示例:

#!/usr/bin/env python

#-*- coding: utf8 -*-

import re

html = """

多云

"""

if name == 'main':

p = re.compile(']+>')

print p.sub("", html)

Python通过正则表达式取html中温度信息代码示例:

#!/usr/bin/env python

#-*- coding: utf8 -*-

import re

html = """

14℃

"""

if name == 'main':

p = re.compile(']+>')

print p.sub("", html)

2、Python通过正则表达式去除(过滤)HTML标签示例代码:

# -*- coding: utf-8-*-

import re

##过滤HTML中的标签

#将HTML中标签等信息去掉

#@param htmlstr HTML字符串.

def filter_tags(htmlstr):

#先过滤CDATA

re_cdata=re.compile('//]*//\]\]>',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('169it.com_index.htm').read()

news=filter_tags(s)

print news

以上就是本文的全部内容,希望对大家的学习有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/472212.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python基础知识-pycharm版】第七节-函数

函数函数函数定义与调用形参和实参变量的作用域&#xff08;全局变量和局部变量&#xff09;局部变量和全局变量的测试参数的传递参数的几种类型位置参数默认值参数命名参数可变参数强制命名参数lambda表达式和匿名函数eval()函数用法递归函数_函数调用内存分析_栈帧的创建嵌套…

天池 在线编程 停车困境(双指针)

文章目录1. 题目2. 解题1. 题目 描述 停车场里停着许多汽车。 停车位是一条很长的直线&#xff0c;每米都有一个停车位。 当前很多汽车停放&#xff0c;您想通过建造屋顶来遮雨挡雨。 要求至少有k辆车的车顶被车顶遮盖&#xff0c;要覆盖k辆车的车顶的最小长度是多少&#xff…

《maven实战》笔记(2)----一个简单maven项目的搭建,测试和打包

参照《maven实战》在本地创建对应的基本项目helloworld&#xff0c;在本地完成后项目结构如下&#xff1a; 可以看到maven项目的骨架&#xff1a;src/main/java&#xff08;javaz主代码&#xff09;src/test/java&#xff08;测试代码&#xff09;src/main/resuources&#xff…

python自动复制_Python自动复制日志,python,拷贝

#!/usr/bin/env pythonimport osimport timeimport reimport osfrom time import sleepcmd3“adb pull /resources/map/BaiduMapAuto/bnav/log /Users/shixinfa/Desktop/0630/log”os.system(cmd3)while True:file1 os.stat(’/Users/shixinfa/Desktop/0630/InssdkLog’) # in…

python爬虫爬微信红包_python 微信红包

def redbags(money, num10):import randomchoice random.sample(range(1, money * 100), num - 1)choice.extend([0,money*100])choice.sort()return [(choice[i 1] - choice[i]) / 100 for i in range(num)]while True:money input(请输入你要发放的红包金额:).strip()num …

【Python基础知识-pycharm版】第八节-面向对象编程/类

面向对象编程面向对象和面向过程的区别_执行者思维_设计者思维类的定义构造函数__init__实例属性_内存分析实例方法_内存分析类对象类属性_内存分析创建类和对象的底层类方法_静态方法_内存分析图示__del__()析构方法和垃圾回收机制__call__()方法和可调用对象面向对象和面向过…

天池 在线编程 推荐朋友(哈希)

文章目录1. 题目2. 解题1. 题目 描述 给n个人的朋友名单&#xff0c;告诉你user是谁&#xff0c;请找出user最可能认识的人。&#xff08;他和user有最多的共同好友且他不是user的朋友&#xff09; n < 500。 好友关系是相互的。&#xff08;b若出现在a的好友名单中&#…

mr图像翻转的原因_MR的特殊检查脂肪抑制

让学习成为一种好习惯正文开始脂肪抑制脂肪抑制是指在MR成像中通过调整采集参数而选择性的抑制脂肪信号&#xff0c;使其失去高信号变为低信号&#xff0c;以区分同样为高信号的不同结构&#xff0c;在临床诊断上具有重要的意义&#xff0c;主要表现在&#xff1a;(1)减少运动伪…

Qt 图形特效(Graphics Effect)介绍

原文链接:Qt 图形特效(Graphics Effect)介绍 QGraphicsEffect也是Qt-4.6引入的一个新功能。它让给图形元素QGraphicsItem增加更佳视觉效果的编程变得非常简单。 先来看几张效果图。 上图中最上面的那个图片是没有使用QGraphicsEffect处理的原图&#xff0c;下面的四个图片分别代…

小米usb3.0修复补丁_今日热闻 | Redmi 10X系列发布、小米手环5产品外观曝光、Win10补丁导致蓝屏、AXON 11 SE 6月发布...

今日热点新闻realme X50 Pro 玩家版发布realme 通过线上发布会推出包括真我 X50 Pro 玩家版在内的 8 款新品。其中真我 X50 Pro 玩家版搭载高通骁龙 865 移动平台、6.44 寸 90Hz 刷新率 AMOLED 屏幕和 1216 超线性双扬声器&#xff0c;配备 VC 液冷散热、线性马达和 4200mAh 电…

【Python基础知识-pycharm版】第九节_面向对象的三大特征

第九节方法方法没有重载私有属性和私有方法&#xff08;实现封装&#xff09;property装饰器_get和set方法面向对象的三大特征说明(封装、继承、多态)继承方法的重写&#xff08;类成员的继承和重写&#xff09;查看类的继承结构object根类_dir() 查看对象属性重写__str__()方法…

LeetCode 1869. 哪种连续子字符串更长

文章目录1. 题目2. 解题1. 题目 给你一个二进制字符串 s 。如果字符串中由 1 组成的 最长 连续子字符串 严格长于 由 0 组成的 最长 连续子字符串&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 例如&#xff0c;s "110100010" 中&#xff0c;…

如何通过像素点找到世界坐标_如何通过阅读来找到自己理论研究的“视域”?...

理论研究多用演绎法&#xff0c;也就是说&#xff0c;理论研究一般始于一个独特的概念、理论视角&#xff0c;或者判断。用刘良华的观点来说&#xff0c;这些都是理论研究的“视域”&#xff0c;也是理论研究得以展开的“大前提”。因此&#xff0c;理论研究最为关键的问题&…

任务并行VS数据并行

并行计算中&#xff0c;有两种并行的方法&#xff1a;任务并行&#xff08;task-parallelism&#xff09;和数据并行&#xff08;data-parallelism&#xff09;。任务并行&#xff1a;将许多可以解决问题的任务分割&#xff0c;然后分布在一个或者多个核上进行程序的执行。数据…

免费python基础笔记_python基础笔记(一)

1、就单个 python 文件来说在 python 中 python 的后缀可以是任意的。但如果这个 python 文件需要导入的时候如果不是 .py 会出错。所以一般情况下 python 文件的后缀为 .py2、是 linux 中使用 ./文件.py 时候需要在文档的第一行注明解释器路径# !/usr/bin/env/ python3、声明…

【Python基础知识-pycharm版】第十节_异常

第十节异常异常机制本质异常解决的关键&#xff1a;定位try... 一个 except 结构try... 多个 except 结构try...except...else 结 构try...except...finally 结构return 语句和异常处理问题常见异常的解决常见异常汇总with 上下文管理trackback 模块自定义异常类异常 在实际工…

k8s挂载目录_拥抱云原生,如何将开源项目用k8s部署?

k8s以及云原生相关概念近年来一直比较火热&#xff0c;阿丸最近搞了个相关项目&#xff0c;小结一下。本文将重点分享阿里开源项目otter适配k8s部署的改造过程&#xff0c;其中的改造过程和技巧应该适用于将大多数开源项目改造到k8s进行部署。1.背景otter是阿里开源的分布式数据…

LeetCode 1870. 准时到达的列车最小时速(二分查找)

文章目录1. 题目2. 解题2.1 模拟超时2.2 二分查找1. 题目 给你一个浮点数 hour &#xff0c;表示你到达办公室可用的总通勤时间。 要到达办公室&#xff0c;你必须按给定次序乘坐 n 趟列车。 另给你一个长度为 n 的整数数组 dist &#xff0c;其中 dist[i] 表示第 i 趟列车的行…

jdk1.5新特性

“JDK1.5”&#xff08;开发代号猛虎&#xff09;的一个重要主题就是通过新增一些特性来简化开发&#xff0c;这些特性包括泛型&#xff0c;for-else 循环&#xff0c;自动装包/拆包&#xff0c;枚举&#xff0c;可变参数, 静态导入 。使用这些特性有助于我们编写更加清晰&…

jsonp跨域原理_Rust 搭建可跨域访问服务器JsonP(一)

最近有一个项目极有可能需要一个可跨域的服务器做一个中转&#xff0c;思来想去决定用Rust来实现这个服务器&#xff0c;因为有如下优点。1、编译体积小 2、跨平台 3、安全性较高JsonP(JSON with Padding)&#xff1a;带有填充的JSON&#xff0c;这里的填充指的是回调函数。为什…