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通过解析网页实现看报程序的方法
Aug 04 Python
简单谈谈Python中的反转字符串问题
Oct 24 Python
Django自定义分页效果
Jun 27 Python
50行Python代码实现人脸检测功能
Jan 23 Python
Python递归函数实例讲解
Feb 27 Python
使用PyQt4 设置TextEdit背景的方法
Jun 14 Python
详解Python 调用C# dll库最简方法
Jun 20 Python
Django Aggregation聚合使用方法解析
Aug 01 Python
在Django admin中编辑ManyToManyField的实现方法
Aug 09 Python
python实现用户名密码校验
Mar 18 Python
使用PyWeChatSpy自动回复微信拍一拍功能的实现代码
Jul 02 Python
浅谈对python中if、elif、else的误解
Aug 20 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解压tar.gz格式文件的方法
2016/02/14 PHP
php5.6.x到php7.0.x特性小结
2019/08/17 PHP
Prototype使用指南之hash.js
2007/01/10 Javascript
jquery tools系列 expose 学习
2009/09/06 Javascript
jquery刷新页面的实现代码(局部及全页面刷新)
2011/07/11 Javascript
基于jquery实现的鼠标拖拽元素复制并写入效果
2011/08/23 Javascript
js判断页面中是否有指定控件的简单实例
2014/03/04 Javascript
jquery表单对象属性过滤选择器实例分析
2015/05/18 Javascript
使用javascript提交form表单方法汇总
2015/06/25 Javascript
jQuery弹簧插件编写基础之“又见弹窗”
2015/12/11 Javascript
jQuery解决$符号命名冲突
2016/06/18 Javascript
ES6新特性:使用export和import实现模块化详解
2017/07/31 Javascript
js+html获取系统当前时间
2017/11/10 Javascript
你点的 ES6一些小技巧,请查收
2018/04/25 Javascript
vue中beforeRouteLeave实现页面回退不刷新的示例代码
2019/11/01 Javascript
jQuery实现的分页插件完整示例
2020/05/26 jQuery
Vue-Ant Design Vue-普通及自定义校验实例
2020/10/24 Javascript
[02:49]2014DOTA2电竞也是体育项目! 势要把荣誉带回中国!
2014/07/20 DOTA
python检测远程端口是否打开的方法
2015/03/14 Python
详解Django中的form库的使用
2015/07/18 Python
常用python编程模板汇总
2016/02/12 Python
使用python为mysql实现restful接口
2018/01/05 Python
python搭建服务器实现两个Android客户端间收发消息
2018/04/12 Python
Python实现二维曲线拟合的方法
2018/12/29 Python
python+selenium 鼠标事件操作方法
2019/08/24 Python
俄罗斯美容和健康网上商店:Созвездие Красоты
2019/07/23 全球购物
西班牙购买行李箱和背包网站:Maletas Greenwich
2019/10/08 全球购物
俄罗斯游戏商店:Buka
2020/03/01 全球购物
加拿大户外探险购物网站:SAIL
2020/06/27 全球购物
仓库管理专业个人的自我评价
2013/12/30 职场文书
装修五一活动策划案
2014/01/23 职场文书
地球物理学专业推荐信
2014/09/08 职场文书
反腐倡廉剖析材料
2014/09/30 职场文书
退学证明范本3篇
2014/10/29 职场文书
建党伟业的观后感
2015/06/01 职场文书
2021-4-5课程——SQL Server查询【3】
2021/04/05 SQL Server