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 Web框架Flask中使用七牛云存储实例
Feb 08 Python
python实现获取Ip归属地等信息
Aug 27 Python
用Python写王者荣耀刷金币脚本
Dec 21 Python
python抓取网页中链接的静态图片
Jan 29 Python
python如何对实例属性进行类型检查
Mar 20 Python
对python-3-print重定向输出的几种方法总结
May 11 Python
PyCharm+Qt Designer+PyUIC安装配置教程详解
Jun 13 Python
基于Python和PyYAML读取yaml配置文件数据
Jan 13 Python
Python如何脚本过滤文件中的注释
May 27 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
Jul 09 Python
python中的对数log函数表示及用法
Dec 09 Python
详解基于Facecognition+Opencv快速搭建人脸识别及跟踪应用
Jan 21 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
解析array splice的移除数组中指定键的值,返回一个新的数组
2013/07/02 PHP
PHP多文件上传类实例
2015/03/07 PHP
php检查是否是ajax请求的方法
2015/04/16 PHP
PHP之图片上传类实例代码(加了缩略图)
2016/06/30 PHP
基于Jquery的仿Windows Aero弹出窗(漂亮的关闭按钮)
2010/09/28 Javascript
jquery动态添加元素事件失效问题解决方法
2014/05/23 Javascript
javascript实现随时变化着的背景颜色
2015/04/02 Javascript
详解JavaScript ES6中的Generator
2015/07/28 Javascript
jQuery获取页面及个元素高度、宽度的总结——超实用
2015/07/28 Javascript
jQuery实现美观的多级动画效果菜单代码
2015/09/06 Javascript
详解JavaScript 中的 replace 方法
2016/01/01 Javascript
js判断手机浏览器操作系统和微信浏览器的方法
2016/04/30 Javascript
JavaScript中子对象访问父对象的方式详解
2016/09/01 Javascript
基于JS实现checkbox全选功能实例代码
2016/10/31 Javascript
angular4 如何在全局设置路由跳转动画的方法
2017/08/30 Javascript
vue+webpack中配置ESLint
2018/11/07 Javascript
jQuery插件实现非常实用的tab栏切换功能【案例】
2019/02/18 jQuery
JavaScript判断对象和数组的两种方法
2019/05/31 Javascript
js设计模式之单例模式原理与用法详解
2019/08/15 Javascript
JS实现的雪花飘落特效示例
2019/12/03 Javascript
微信小程序实现音乐播放页面布局
2020/12/11 Javascript
python日期时间转为字符串或者格式化输出的实例
2018/05/29 Python
python特性语法之遍历、公共方法、引用
2018/08/08 Python
深入解析python中的实例方法、类方法和静态方法
2019/03/11 Python
浅谈Python中(&amp;,|)和(and,or)之间的区别
2019/08/07 Python
Python搭建代理IP池实现接口设置与整体调度
2019/10/27 Python
pycharm激活码有效到2020年11月底
2020/09/18 Python
如何让python的运行速度得到提升
2020/07/08 Python
css3选择器基本介绍
2014/12/15 HTML / CSS
用canvas画心电图的示例代码
2018/09/10 HTML / CSS
越南电子产品购物网站:FPT Shop
2017/12/02 全球购物
中科创达面试题
2016/12/28 面试题
中学门卫岗位职责
2013/12/26 职场文书
管理人员岗位职责
2015/02/14 职场文书
女儿满月酒致辞
2015/07/29 职场文书
springboot读取resources下文件的方式详解
2022/06/21 Java/Android