python文本筛选html_python 正则表达式过滤文本中的html标签 源代码解析

#py2.7

#coding:utf-8

import re

import os

import chardet

def filter_tag(htmlstr):

re_cdata = re.compile('^>]*>', re.I)

re_script = re.compile(']*>[^', re.I) #过滤脚本

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

re_br = re.compile('
')

re_h = re.compile('?\w+[^>]*>')

re_comment = re.compile('')

s = re_cdata.sub('', htmlstr)

s = re_script.sub('', s)

s=re_style.sub('',s)

s=re_br.sub('\n',s)

s=re_h.sub(' ',s)

s=re_comment.sub('',s)

blank_line=re.compile('\n+')

s=blank_line.sub('\n',s)

s=re.sub('\s+',' ',s)

s=replaceCharEntity(s)

return s

def replaceCharEntity(htmlstr):

CHAR_ENTITIES={'nbsp':'','160':'',

'lt':'

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

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

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

re_charEntity=re.compile(r'?(?P\w+);') #命名组,把 匹配字段中\w+的部分命名为name,可以用group函数获取

sz=re_charEntity.search(htmlstr)

while sz:

#entity=sz.group()

key=sz.group('name') #命名组的获取

try:

htmlstr=re_charEntity.sub(CHAR_ENTITIES[key],htmlstr,1) #1表示替换第一个匹配

sz=re_charEntity.search(htmlstr)

except KeyError:

htmlstr=re_charEntity.sub('',htmlstr,1)

sz=re_charEntity.search(htmlstr)

return htmlstr

if __name__=='__main__':

cpath=os.getcwd()

for root,dirs,files in os.walk(cpath):

for file in files:

if file.endswith('htm') or file.endswith('html'):

f=open(root+os.path.sep+file)

stream=f.read()

htmlstr =stream.decode(chardet.detect(stream)['encoding'])

rs=filter_tag(htmlstr)

f.close()

txtname=re.sub(r'.htm*$','.txt',file)

print txtname

f=open(root+os.path.sep+txtname,'w')

f.write(rs.encode('utf-8'))

f.close()

总结:

转义符:

. 匹配除换行符以外的任意字符

\w 匹配字母或数字或下划线或汉字

\s 匹配任意的空白符

\d 匹配数字

\b 匹配单词的开始或结束

^ 匹配字符串的开始

$ 匹配字符串的结束

\W 匹配任意不是字母,数字,下划线,汉字的字符

\S 匹配任意不是空白符的字符

\D 匹配任意非数字的字符

\B 匹配不是单词开头或结束的位置

[^x] 匹配除了x以外的任意字符

[^aeiou] 匹配除了aeiou这几个字母以外的任意字符

常用的限定符代码/语法说明:

*重复零次或更多次

+重复一次或更多次

?重复零次或一次

{n}重复n次

{n,}重复n次或更多次

{n,m}重复n到m次

关于命名组:

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

前向界定 (?<=…)

后向界定(?=…)

前向非界定 (?

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

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

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

相关文章

erp采购总监个人总结_《用友 ERP 培训教程:财务核算/供应链管理/物料需求计划》ERP概述 : ERP基础知识...

第1章 ERP概述本章重点_- _ERP概要_- _ERP实施成功的必要条件_- _ERP几个重要的名词解释用友ERP-U8&#xff08;V8 .72&#xff09;简介及功能按钮说明1.1 ERP基础知识1.1.1 ERP基本概念ERP&#xff08;Enterprise Resources Planning&#xff09;中文叫做企业资源规划&…

android studio1.5 for mac,适用于Mac的Android Studio 1.5.x随机崩溃

适用于Mac的Android Studio 1.5(AI-141.2456560)经常随机崩溃.我正在使用Macbook Pro 15“Retina(2105年中期)和Mac OS X 10.11.1真的很烦人.你有过这些崩溃的经历吗&#xff1f;你知道任何解决方法吗&#xff1f;提前致谢.这是崩溃日志的标题&#xff1a;Process: studio [425…

python 八大排序_八大排序算法的 Python 实现

1、插入排序def insert_sort(lists):# 插入排序count len(lists)for i in range(1, count):key lists[i]j i - 1while j > 0:if lists[j] > key:lists[j 1] lists[j]lists[j] keyj - 1return lists2、希尔排序def shell_sort(lists):# 希尔排序count len(lists)st…

soc 设计soc设计 uml实务手册_企业内训“软件需求设计建模方法学全程实例剖析”训练方案(2020年)...

※训练介绍※利润需求-设计。软件开发中&#xff0c;需求是解决“系统怎样好卖”的问题&#xff0c;设计是解决“降低开发成本”的问题。要迈向“低成本制造好卖的产品”的境界&#xff0c;并非喊喊口号就能达到。口号&#xff1a;我们只做最重要的需求&#xff0c;尽快把系统推…

鸿蒙分布式通讯子系统,【鸿蒙】分布式通信子系统--让华为手机发现Hi3861开发板...

目录&#xff1a;工具步骤运行结果工具&#xff1a;1. 华为手机&#xff0c;需要有多设备协同功能。在设置->更多连接->多设备协同&#xff0c;查看是否有多设备协同功能&#xff0c;此功能使用的就是coap协议。2. Hi3861开发板步骤&#xff1a;1. 修改源码&#xff0c;…

python2.7 pyqt4创建qtapp_python-2.7 – 向TabWidget pyqt4添加加号按钮

以下代码提供了一个可以动态添加选项卡的选项卡界面import sys,randomfrom PyQt4 import QtCore,QtGuiclass TabContainer(QtGui.QWidget):def __init__(self):super(TabContainer,self).__init__()self.next_item_is_table Falseself.initUI()def initUI(self):self.setGeome…

html怎样在一张图片里写字,用HTML代码在图片上写字

效果一&#xff1a;文字居中cellSpacing0 cellPadding0 width410 aligncenterbackgroundhttp://bbs.guqu.net/UploadFile/2005-1/200512211045825.gifborder0> type"vertical" spacer>size7>百年爱情文字在图片中的位置。由中的aligncenter决定。center&…

winform 统计大量数据重复的元素个数_DAY10——推断统计之概率与概率分布:常见的离散型概率分布...

「数学期望——某件事情大量发生之后的平均结果」----------------分割又分割----------------------昨天文章排版出了问题&#xff0c;今天重新排版。数据的三个统计维度&#xff1a;集中程度、离散程度、分布情况。集中程度&#xff1a;期望离散程度&#xff1a;方差、标准差…

数组转换为html,如何将多维PHP数组转换为html表

我正在尝试使用多维数组变量制作一个HTML表&#xff0c;该变量$array2是一个查询(来自mysql数据库PHP查询而不是一个自制查询)&#xff0c;如下所示&#xff1b;Array([0] > Array([0] > M2TYEE[1] > Jean[2] > Harvey[3] > London[4] > 0314686334)[1] >…

xss跨站脚本攻击_常见攻击之xss跨站脚本攻击

前言随着互联网的不断发展&#xff0c;web应用的互动性也越来越强。相应的&#xff0c;在用户体验提升的同时安全风险也会跟着有所增加。今天&#xff0c;我们就来讲一讲web渗透中常见的攻击方式之一&#xff0c;XSS攻击。首先需要了解他是如何工作的&#xff0c;以及我们如何利…

android dropbox切换账户,android – 如何获取我的APP_KEY和SECRET_KEY的Dropbox同步?

我正在努力构建将应用程序的* .csv文件与理想的保管箱帐户同步的机会.我到目前为止做了什么>清单中的权限和com.dropbox.client2.android.AuthActivity>使用我的发行商店签署了我的应用程序>执行一些代码来检查保管箱服务问题是我不明白我在哪里可以得到APP_KEY和SECR…

缺陷调研报告_质量零缺陷 | 打造极致产品的质量管理之道

质量是政治质量是生命质量是效益为强化全员“零缺陷”质量意识&#xff0c;坚决打赢质量提升攻坚战&#xff0c;现开设“质量零缺陷”专栏&#xff0c;着力宣传全院各单位在加强质量管理&#xff0c;落实零缺陷理念等方面的典型做法和质量故事。今天为大家带来的是曾获得“全国…

html中隐藏单元格上边框,HTML table 标签边框问题(隐藏表格边框、单元格边框等)...

一、表格的常用属性基本属性有&#xff1a;width(宽度)、height(高度)、border(边框值)、cellspacing(表格的内宽&#xff0c;即表格与tr之间的间隔)、 cellpadding(表格内元素的间隔&#xff0c;即tr与tr之间的间隔)、bordercolorlight(表格的亮边框颜色)、 bordercolordark(表…

每日签到html特效,前端这种连续签到的效果要怎么写

后端返回数据&#xff1a; $data [month>2017-08,date>1,2,3,7,11]month: 当前月份&#xff1b;data:签到的日期;前端处理数据&#xff1a;首先根据date里返回的值将每个对应的日期给到class使其变亮&#xff0c;然后再在each中判断当前元素的上级元素是否为点亮状态&am…

oracle 从右往左截取_截取GIF、调分辨率、快捷拨号,三星这些功能让人爱不释手...

昨天三星5G手机正式上市后&#xff0c;今天又爆出苹果被三星拒绝后要转向华为购买5G芯片&#xff0c;苹果如此操作是真的走投无路了&#xff1f;再看看吃瓜群众们&#xff0c;吐槽一波接一波。​一会儿&#xff0c;嫌弃三星信号频段不完全&#xff0c;10nm的工艺制程太差。一会…

html编辑器查找与替换,织梦kindeditor文本编辑器增加“查找替换”功能

织梦kindeditor文本编辑器增加“查找替换”功能效果演示1、items 里面增加 search 按钮[source,|,undo,redo,|,preview,print,template,code,cut,copy,paste,plainpaste,wordpaste,|,justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,insertunorderedlis…

python excel数据可视化软件_excel是基础的数据分析与可视化工具

(原创声明&#xff0c;转载引用需要指明来源)Microsoft Excel是Microsoft为电脑编写的一款电子表格软件。直观的界面、出色的计算功能和图表工具&#xff0c;使Excel成为流行的计算机数据处理软件。管理数据Excel可以管理数据创建模板&#xff0c;使得Excel电子表格的数据自动存…

html中表单的校验的插件,功能强大的jquery.validate表单验证插件

本文实例为大家分享了jquery.validate表单验证的使用方法&#xff0c;供大家参考&#xff0c;具体内容如下1 、表单验证的准备工作在开启长篇大论之前&#xff0c;首先将表单验证的效果展示给大家。1.点击表单项&#xff0c;显示帮助提示2.鼠标离开表单项时&#xff0c;开始校验…

聊天室程序python_Python聊天室程序(基础版)

本文实例为大家分享了Python聊天室程序的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下客户端代码&#xff1a;# Filename: socketClient.pyimport socketimport sysimport threading# Client GUIfrom tkinter import *import Pmw# Create a TCP/IP socketsock soc…

怎么设置缓存 html js,如何为css / js文件设置缓存

如果你使用Apache,我会从这里开始.压缩和缓存是不同的.对于压缩,PHP Minify或YUI Compressor是伟大的.如果一切都失败,TextMate有一个很好的Javascript Tools Bundle,可以压缩你的代码.您可以手动压缩代码,然后将其上传,并撤消压缩以使源恢复到可读状态.我不推荐这个,但我以前做…