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 基础学习教程
Feb 08 Python
如何高效使用Python字典的方法详解
Aug 31 Python
django文档学习之applications使用详解
Jan 29 Python
Python中利用xpath解析HTML的方法
May 14 Python
Python定义一个跨越多行的字符串的多种方法小结
Jul 19 Python
Python OpenCV 调用摄像头并截图保存功能的实现代码
Jul 02 Python
python os.fork() 循环输出方法
Aug 08 Python
Python 寻找局部最高点的实现
Dec 05 Python
Python下利用BeautifulSoup解析HTML的实现
Jan 17 Python
ubuntu 安装pyqt5和卸载pyQt5的方法
Mar 24 Python
python如何绘制疫情图
Sep 16 Python
Python的logging模块基本用法
Dec 24 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蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
分割GBK中文遭遇乱码的解决方法
2013/08/09 PHP
PHP防止注入攻击实例分析
2014/11/03 PHP
php实现随机显示图片方法汇总
2015/05/21 PHP
php远程下载类分享
2016/04/13 PHP
PHP的mysqli_stat()函数讲解
2019/01/23 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
jquery 插件 人性化的消息显示
2008/01/21 Javascript
EasyUI中的tree用法介绍
2011/11/01 Javascript
javascript中的作用域和上下文使用简要概述
2013/12/05 Javascript
JavaScript中的console.assert()函数介绍
2014/12/29 Javascript
json实现前后台的相互传值详解
2015/01/05 Javascript
详谈LABJS按需动态加载js文件
2015/05/07 Javascript
javascript电商网站抢购倒计时效果实现
2015/11/19 Javascript
深入理解JavaScript内置函数
2016/06/03 Javascript
react native实现往服务器上传网络图片的实例
2017/08/07 Javascript
VScode格式化ESlint方法(最全最好用方法)
2019/09/10 Javascript
解决axios post 后端无法接收数据的问题
2019/10/29 Javascript
[01:55]TI9显影之尘系列 - Evil Geniuses
2019/08/22 DOTA
在Python上基于Markov链生成伪随机文本的教程
2015/04/17 Python
浅谈Django学习migrate和makemigrations的差别
2018/01/18 Python
Python3 中文文件读写方法
2018/01/23 Python
浅谈Pycharm调用同级目录下的py脚本bug
2018/12/03 Python
利用pyecharts读取csv并进行数据统计可视化的实现
2020/04/17 Python
HTML5制作酷炫音频播放器插件图文教程
2014/12/30 HTML / CSS
慕尼黑山地运动、户外服装和体育用品专家:Sporthaus Schuster
2019/08/27 全球购物
SQL SERVER面试资料
2013/03/30 面试题
师范生的个人求职信范文
2014/01/04 职场文书
授权委托书怎么写
2014/04/03 职场文书
送温暖献爱心活动总结
2014/07/08 职场文书
委托书的写法
2014/09/16 职场文书
企业催款函范本
2015/06/24 职场文书
Pytorch 中net.train 和 net.eval的使用说明
2021/05/22 Python
Python实现简单的猜单词
2021/06/15 Python
SQL 聚合、分组和排序
2021/11/11 MySQL
vue/cli 配置动态代理无需重启服务的方法
2022/05/20 Vue.js