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中的反转字符串问题
Oct 24 Python
python+VTK环境搭建及第一个简单程序代码
Dec 13 Python
Pycharm无法显示动态图片的解决方法
Oct 28 Python
python ddt数据驱动最简实例代码
Feb 22 Python
Python基于机器学习方法实现的电影推荐系统实例详解
Jun 25 Python
python 消费 kafka 数据教程
Dec 21 Python
关于Pytorch MaxUnpool2d中size操作方式
Jan 03 Python
Python PyQt5模块实现窗口GUI界面代码实例
May 12 Python
django rest framework 过滤时间操作
Jul 12 Python
利用Python函数实现一个万历表完整示例
Jan 23 Python
使用tensorflow 实现反向传播求导
May 26 Python
Python中with上下文管理协议的作用及用法
Mar 18 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
建立文件交换功能的脚本(一)
2006/10/09 PHP
JavaScript setTimeout和setInterval的使用方法 说明
2010/03/25 Javascript
jquery的键盘事件修改代码
2011/02/24 Javascript
JS中令人发指的valueOf方法介绍
2013/02/22 Javascript
html页面显示年月日时分秒和星期几的两种方式
2013/08/20 Javascript
浅析offsetLeft,Left,clientLeft之间的区别
2013/11/30 Javascript
Javascript 遍历页面text控件详解
2014/01/06 Javascript
javascript避免数字计算精度误差的方法详解
2014/03/05 Javascript
jQuery实现鼠标划过展示大图的方法
2015/03/09 Javascript
详解基于Bootstrap扁平化的后台框架Ace
2015/11/27 Javascript
JavaScript中日期函数的相关操作知识
2016/08/03 Javascript
浅谈js中test()函数在正则中的使用
2016/08/19 Javascript
JavaScript 实现的checkbox经典实例分享
2016/10/16 Javascript
jQuery ajax的功能实现方法详解
2017/01/06 Javascript
JavaScript原生数组Array常用方法
2017/04/06 Javascript
深入理解ES6的迭代器与生成器
2017/08/19 Javascript
实现单层json按照key字母顺序排序的示例
2017/12/06 Javascript
使用vuex缓存数据并优化自己的vuex-cache
2018/05/30 Javascript
layui radio性别单选框赋值方法
2018/08/15 Javascript
vue+axios 前端实现的常用拦截的代码示例
2018/08/23 Javascript
JavaScript实现移动端弹窗后禁止滚动
2020/05/25 Javascript
图解JS原型和原型链实现原理
2020/09/15 Javascript
jQuery实现动态向上滚动
2020/12/21 jQuery
Python类的定义、继承及类对象使用方法简明教程
2015/05/08 Python
Python爬虫之xlml解析库(全面了解)
2017/08/08 Python
python网络爬虫之如何伪装逃过反爬虫程序的方法
2017/11/23 Python
Python 在字符串中加入变量的实例讲解
2018/05/02 Python
详细介绍Python进度条tqdm的使用
2019/07/31 Python
python使用if语句实现一个猜拳游戏详解
2019/08/27 Python
最小二乘法及其python实现详解
2020/02/24 Python
python爬取豆瓣电影排行榜(requests)的示例代码
2021/02/18 Python
H5 meta小结(前端必看篇)
2016/08/24 HTML / CSS
家长评语大全
2014/01/22 职场文书
2015年师德师风自我评价范文
2015/03/05 职场文书
golang内置函数len的小技巧
2021/07/25 Golang
Meta增速拉垮,元宇宙难当重任
2022/04/29 数码科技