Python对HTML转义字符进行反转义的实现方法


Posted in Python onApril 28, 2019

什么是转义字符

在 HTML 中 <、>、& 等字符有特殊含义(<,> 用于标签中,& 用于转义),他们不能在 HTML 代码中直接使用,如果要在网页中显示这些符号,就需要使用 HTML 的转义字符串(Escape Sequence),例如 < 的转义字符是 <,浏览器渲染 HTML 页面时,会自动把转移字符串换成真实字符。

转义字符(Escape Sequence)由三部分组成:第一部分是一个 & 符号,第二部分是实体(Entity)名字,第三部分是一个分号。 比如,要显示小于号(<),就可以写< 。

Python对HTML转义字符进行反转义的实现方法

Python 转义字符串反转义

用 Python 来处理转义字符串有多种方式,而且 py2 和 py3 中处理方式不一样,在 python2 中,反转义的模块是 HTMLParser。

# Python2
import HTMLParser
>>> HTMLParser().unescape('param=p1&param=p2')
'param=p1¶m=p2'

Python3 HTMLParser 模块迁移到了 html.parser

# Python3
>>> from html.parser import HTMLParser
>>> HTMLParser().unescape('param=p1&param=p2')
'param=p1¶m=p2'

到 python3.4 以后的版本,在 html 模块新增了 unescape 方法。

# Python3.4
>>> import html
>>> html.unescape('param=p1&param=p2')
'param=p1¶m=p2'

推荐最后一种写法,因为 HTMLParser.unescape 方法在 Python3.4 就已经被废弃掉不推荐使用了,意味着之后的版本会被彻底移除。

另外,xml的sax模块也有支持反转义的函数

>>> from xml.sax.saxutils import unescape
>>> unescape('param=p1&param=p2')
'param=p1¶m=p2'

当然,你完全可以实现自己的反转义功能,不复杂,当然,我们崇尚不重复造轮子。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中用Ctrl+C终止多线程程序的问题解决
Mar 30 Python
python函数参数*args**kwargs用法实例
Dec 04 Python
python的迭代器与生成器实例详解
Jul 16 Python
理解Python中的With语句
Feb 02 Python
Python爬取三国演义的实现方法
Sep 12 Python
Python单元测试unittest的具体使用示例
Dec 17 Python
Django命名URL和反向解析URL实现解析
Aug 09 Python
Python with标签使用方法解析
Jan 17 Python
python通过安装itchat包实现微信自动回复收到的春节祝福
Jan 19 Python
Django路由层URLconf作用及原理解析
Sep 24 Python
Python timeit模块原理及使用方法
Oct 10 Python
使用豆瓣源来安装python中的第三方库方法
Jan 26 Python
Django使用redis缓存服务器的实现代码示例
Apr 28 #Python
django的settings中设置中文支持的实现
Apr 28 #Python
Django数据库类库MySQLdb使用详解
Apr 28 #Python
Django中如何防范CSRF跨站点请求伪造攻击的实现
Apr 28 #Python
​如何愉快地迁移到 Python 3
Apr 28 #Python
python学习开发mock接口
Apr 28 #Python
Python简单基础小程序的实例代码
Apr 28 #Python
You might like
php中将网址转换为超链接的函数
2011/09/02 PHP
php中smarty实现多模版网站的方法
2015/06/11 PHP
javascript 数组排序函数sort和reverse使用介绍
2013/11/21 Javascript
Jquery利用mouseenter和mouseleave实现鼠标经过弹出层且可以点击
2014/02/12 Javascript
VS2008中使用JavaScript调用WebServices
2014/12/18 Javascript
JavaScript中的方法调用详细介绍
2014/12/30 Javascript
JS实现来回出现文字的状态栏特效代码
2015/10/31 Javascript
浅谈Javascript数组(推荐)
2016/05/17 Javascript
JavaScript实现刷新不重记的倒计时
2016/08/10 Javascript
vue.js实现单选框、复选框和下拉框示例
2017/07/18 Javascript
浅谈JS中的反柯里化( uncurrying)
2017/08/17 Javascript
JavaScript你不知道的一些数组方法
2017/08/18 Javascript
浅谈webpack+react多页面开发终极架构
2018/11/11 Javascript
一篇文章,教你学会Vue CLI 插件开发
2019/04/17 Javascript
微信小程序实现图片翻转效果的实例代码
2019/09/20 Javascript
vue vantUI tab切换时 list组件不触发load事件的问题及解决方法
2020/02/14 Javascript
JavaScript中break、continue和return的用法区别实例分析
2020/03/02 Javascript
js实现小时钟效果
2020/03/25 Javascript
Element Dialog对话框的使用示例
2020/07/26 Javascript
[06:07]刀塔密之二:攻之吾命受之吾幸
2014/07/03 DOTA
python处理“
2019/06/10 Python
Python使用requests xpath 并开启多线程爬取西刺代理ip实例
2020/03/06 Python
马来西亚网上美容店:Hermo.my
2017/11/25 全球购物
Trench London官方网站:高级风衣和意大利皮夹克
2020/07/11 全球购物
htmlentities() 和 htmlspecialchars()有什么区别
2015/07/01 面试题
自荐信的禁忌和要点
2013/10/15 职场文书
创业计划书如何编写
2014/02/06 职场文书
小溪流的歌教学反思
2014/02/13 职场文书
春风行动实施方案
2014/03/28 职场文书
2014年学校领导班子对照检查材料
2014/09/19 职场文书
民主评议党员自我鉴定
2014/10/21 职场文书
2015年人事专员工作总结
2015/04/29 职场文书
老人与海读书笔记
2015/06/26 职场文书
《打电话》教学反思
2016/02/22 职场文书
图文详解matlab原始处理图像几何变换
2021/07/09 Python
为自由献出你的心脏!「进击的巨人展 FINAL」2022年6月在台开展
2022/04/13 日漫