Python在字符串中处理html和xml的方法


Posted in Python onJuly 31, 2020

问题

你想将HTML或者XML实体如 &entity; 或 &#code; 替换为对应的文本。 再者,你需要转换文本中特定的字符(比如<, >, 或 &)。

解决方案

如果你想替换文本字符串中的 ‘<' 或者 ‘>' ,使用 html.escape() 函数可以很容易的完成。比如:

>>> s = 'Elements are written as "<tag>text</tag>".'
>>> import html
>>> print(s)
Elements are written as "<tag>text</tag>".
>>> print(html.escape(s))
Elements are written as "<tag>text</tag>".

>>> # Disable escaping of quotes
>>> print(html.escape(s, quote=False))
Elements are written as "<tag>text</tag>".
>>>

如果你正在处理的是ASCII文本,并且想将非ASCII文本对应的编码实体嵌入进去, 可以给某些I/O函数传递参数 errors='xmlcharrefreplace' 来达到这个目。比如:

>>> s = 'Spicy Jalapeño'
>>> s.encode('ascii', errors='xmlcharrefreplace')
b'Spicy Jalapeño'
>>>

为了替换文本中的编码实体,你需要使用另外一种方法。 如果你正在处理HTML或者XML文本,试着先使用一个合适的HTML或者XML解析器。 通常情况下,这些工具会自动替换这些编码值,你无需担心。

有时候,如果你接收到了一些含有编码值的原始文本,需要手动去做替换, 通常你只需要使用HTML或者XML解析器的一些相关工具函数/方法即可。比如:

>>> s = 'Spicy "Jalapeño".'
>>> from html.parser import HTMLParser
>>> p = HTMLParser()
>>> p.unescape(s)
'Spicy "Jalapeño".'
>>>
>>> t = 'The prompt is >>>'
>>> from xml.sax.saxutils import unescape
>>> unescape(t)
'The prompt is >>>'
>>>

讨论

在生成HTML或者XML文本的时候,如果正确的转换特殊标记字符是一个很容易被忽视的细节。 特别是当你使用 print() 函数或者其他字符串格式化来产生输出的时候。 使用像 html.escape() 的工具函数可以很容易的解决这类问题。

如果你想以其他方式处理文本,还有一些其他的工具函数比如 xml.sax.saxutils.unescapge() 可以帮助你。 然而,你应该先调研清楚怎样使用一个合适的解析器。 比如,如果你在处理HTML或XML文本, 使用某个解析模块比如 html.parse xml.etree.ElementTree 已经帮你自动处理了相关的替换细节。

以上就是Python在字符串中处理html和xml的方法的详细内容,更多关于Python在字符串中处理html和xml的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python多线程同步Lock、RLock、Semaphore、Event实例
Nov 21 Python
Python写的Tkinter程序屏幕居中方法
Mar 10 Python
在DigitalOcean的服务器上部署flaskblog应用
Dec 19 Python
python安装教程
Feb 28 Python
Python批量提取PDF文件中文本的脚本
Mar 14 Python
Python实现获取前100组勾股数的方法示例
May 04 Python
python中pip的安装与使用教程
Aug 10 Python
Pycharm取消py脚本中SQL识别的方法
Nov 29 Python
python 检查文件mime类型的方法
Dec 08 Python
Python将列表中的元素转化为数字并排序的示例
Dec 25 Python
Python中的np.argmin()和np.argmax()函数用法
Jun 02 Python
python中mongodb包操作数据库
Apr 19 Python
python中selenium库的基本使用详解
Jul 31 #Python
Python过滤序列元素的方法
Jul 31 #Python
python中的django是做什么的
Jul 31 #Python
如何基于python把文字图片写入word文档
Jul 31 #Python
django教程如何自学
Jul 31 #Python
Python实现一个优先级队列的方法
Jul 31 #Python
django表单中的按钮获取数据的实例分析
Jul 31 #Python
You might like
快速开发一个PHP扩展图文教程
2008/12/12 PHP
连接到txt文本的超链接,不直接打开而是点击后下载的处理方法
2009/07/01 PHP
JavaScript高级程序设计(第3版)学习笔记4 js运算符和操作符
2012/10/11 Javascript
jquery实现动态菜单的实例代码
2013/11/28 Javascript
jQuery插件jcrop+Fileapi完美实现图片上传+裁剪+预览的代码分享
2015/04/22 Javascript
JS随机调用指定函数的方法
2015/07/01 Javascript
初步使用bootstrap快速创建页面
2016/03/03 Javascript
jQuery基于ID调用指定iframe页面内的方法
2016/07/06 Javascript
jQuery插件zTree实现获取当前选中节点在同级节点中序号的方法
2017/03/08 Javascript
vue拦截器Vue.http.interceptors.push使用详解
2017/04/22 Javascript
JS基于正则实现数字千分位用逗号分隔的方法
2017/06/16 Javascript
vue.js2.0 实现better-scroll的滚动效果实例详解
2018/08/13 Javascript
Python简单删除列表中相同元素的方法示例
2017/06/12 Python
python opencv之SIFT算法示例
2018/02/24 Python
Python 生成一个从0到n个数字的列表4种方法小结
2019/11/28 Python
基于pycharm实现批量修改变量名
2020/06/02 Python
python UDF 实现对csv批量md5加密操作
2021/01/01 Python
canvas实现滑动验证的实现示例
2020/08/11 HTML / CSS
大整数数相乘的问题
2012/07/22 面试题
介绍一下mysql的日期和时间函数
2013/03/28 面试题
机修工岗位职责
2013/11/24 职场文书
能源工程专业应届生求职信
2014/03/01 职场文书
国窖1573广告词
2014/03/21 职场文书
小学生作文评语大全
2014/04/21 职场文书
书香校园建设方案
2014/05/02 职场文书
党员干部一句话承诺
2014/05/30 职场文书
投资意向书
2014/07/30 职场文书
法制教育演讲稿
2014/09/10 职场文书
股东授权委托书
2014/10/15 职场文书
总经理检讨书范文
2015/02/16 职场文书
教师党员自我评价2015
2015/03/04 职场文书
教师旷工检讨书
2015/08/15 职场文书
解析高可用Redis服务架构分析与搭建方案
2021/06/20 Redis
为什么MySQL分页用limit会越来越慢
2021/07/25 MySQL
Go 中的空白标识符下划线
2022/03/25 Golang
java实现web实时消息推送的七种方案
2022/07/23 Java/Android