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中argparse模块用法实例详解
Jun 03 Python
编写Python小程序来统计测试脚本的关键字
Mar 12 Python
python 安装virtualenv和virtualenvwrapper的方法
Jan 13 Python
利用python程序帮大家清理windows垃圾
Jan 15 Python
Python实现接受任意个数参数的函数方法
Apr 21 Python
python使用RNN实现文本分类
May 24 Python
python 对key为时间的dict排序方法
Oct 17 Python
python中时间转换datetime和pd.to_datetime详析
Aug 11 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
Apr 14 Python
python算的上脚本语言吗
Jun 22 Python
如何理解及使用Python闭包
Jun 01 Python
OpenCV-Python实现怀旧滤镜与连环画滤镜
Jun 09 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
discuz论坛 用户登录 后台程序代码
2008/11/27 PHP
php数组函数序列之rsort() - 对数组的元素值进行降序排序
2011/11/02 PHP
PHP中使用register_shutdown_function函数截获fatal error示例
2015/04/21 PHP
PHP中in_array的隐式转换的解决方法
2018/03/06 PHP
PHP实时统计中文字数和区别
2019/02/28 PHP
PHP如何实现阿里云短信sdk灵活应用在项目中的方法
2019/06/14 PHP
Javascript 面向对象特性
2009/12/28 Javascript
IE6中使用position导致页面变形的解决方案(js代码)
2011/01/09 Javascript
IE6/7/8/9不支持exec的简写方式
2011/05/25 Javascript
javascript分页代码实例分享(js分页)
2013/12/13 Javascript
JS清空多文本框、文本域示例代码
2014/02/24 Javascript
AngularJS入门教程之Select(选择框)详解
2016/07/27 Javascript
自定义vue全局组件use使用、vuex的使用详解
2017/06/14 Javascript
JS去掉字符串中所有的逗号
2017/10/18 Javascript
Vue中插入HTML代码的方法
2018/09/21 Javascript
使用Vuex解决Vue中的身份验证问题
2018/09/28 Javascript
JavaScript的词法结构精华篇
2018/10/17 Javascript
JS获取动态添加元素的方法详解
2019/07/31 Javascript
vue封装swiper代码实例解析
2019/10/08 Javascript
vue实现轮播图帧率播放
2021/01/26 Vue.js
简洁的十分钟Python入门教程
2015/04/03 Python
python的列表List求均值和中位数实例
2020/03/03 Python
浅谈tensorflow模型保存为pb的各种姿势
2020/05/25 Python
python有几个版本
2020/06/17 Python
python 匿名函数与三元运算学习笔记
2020/10/23 Python
10分钟理解CSS3 FlexBox弹性布局
2018/12/20 HTML / CSS
澳洲本土太阳镜品牌:Quay Australia
2019/07/29 全球购物
管理科学大学生求职信
2013/11/13 职场文书
致800米运动员广播稿
2014/02/16 职场文书
房地产广告策划方案
2014/05/15 职场文书
财务管理专业毕业生求职信
2014/06/02 职场文书
网络营销计划书
2015/01/17 职场文书
银行求职信范文
2019/05/13 职场文书
关于党风廉政建设宣传教育月的活动总结!
2019/08/08 职场文书
Go语言-为什么返回值为接口类型,却返回结构体
2021/04/24 Golang
Java生成读取条形码和二维码的简单示例
2021/07/09 Java/Android