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中signal包的使用
Nov 13 Python
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
Jan 12 Python
Python下实现的RSA加密/解密及签名/验证功能示例
Jul 17 Python
Python网络编程基于多线程实现多用户全双工聊天功能示例
Apr 10 Python
python自动查询12306余票并发送邮箱提醒脚本
May 21 Python
关于python2 csv写入空白行的问题
Jun 22 Python
nohup后台启动Python脚本,log不刷新的解决方法
Jan 14 Python
在Python运行时动态查看进程内部信息的方法
Feb 22 Python
scrapy数据存储在mysql数据库的两种方式(同步和异步)
Feb 18 Python
在Python中通过threshold创建mask方式
Feb 19 Python
浅析Python OpenCV三种滤镜效果
Apr 11 Python
Python读取和写入Excel数据
Apr 20 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中array_merge和array相加的区别分析
2013/06/17 PHP
浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
2013/08/06 PHP
避免Smarty与CSS语法冲突的方法
2015/03/02 PHP
PHP模拟asp中response类实现方法
2015/08/08 PHP
php封装好的人民币数值转中文大写类
2015/12/20 PHP
2017年最好用的9个php开发工具推荐(超好用)
2017/10/23 PHP
php的instanceof和判断闭包Closure操作示例
2020/01/26 PHP
jquery加载页面的方法(页面加载完成就执行)
2011/06/21 Javascript
javascript针对DOM的应用分析(四)
2012/04/15 Javascript
只需20行代码就可以写出CSS覆盖率测试脚本
2013/04/24 Javascript
JavaScript简单实现鼠标拖动选择功能
2014/03/06 Javascript
jquery.map()方法的使用详解
2015/07/09 Javascript
使用jQuery监听DOM元素大小变化
2016/02/24 Javascript
教你如何在Node.js中使用jQuery
2016/08/28 Javascript
实例讲解JavaScript中call、apply、bind方法的异同
2016/09/13 Javascript
浅谈React 属性和状态的一些总结
2016/11/21 Javascript
js实现五星评价功能
2017/03/08 Javascript
Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器
2017/04/19 Javascript
React教程之封装一个Portal可复用组件的方法
2018/01/02 Javascript
Angular4 Select选择改变事件的方法
2018/10/09 Javascript
JS中间件设计模式的深入探讨与实例分析
2020/04/11 Javascript
三剑客:offset、client和scroll还傻傻分不清?
2020/12/04 Javascript
[06:21]2014DOTA2国际邀请赛 庆祝VG首阶段领跑;B叔为挣牛排半夜整理情报
2014/07/13 DOTA
Python中函数的多种格式和使用实例及小技巧
2015/04/13 Python
Python 数据处理库 pandas进阶教程
2018/04/21 Python
Python 字符串与数字输出方法
2018/07/16 Python
Python wxPython库Core组件BoxSizer用法示例
2018/09/03 Python
Python实现查找字符串数组最长公共前缀示例
2019/03/27 Python
Python Flask框架扩展操作示例
2019/05/03 Python
Python 内置函数globals()和locals()对比详解
2019/12/23 Python
python中turtle库的简单使用教程
2020/11/11 Python
一波HTML5 Canvas基础绘图实例代码集合
2016/02/28 HTML / CSS
本科毕业自我鉴定
2014/03/20 职场文书
欢迎领导检查标语
2014/06/27 职场文书
博士生求职信
2014/07/06 职场文书
简易离婚协议书范本2014
2014/10/15 职场文书