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中from module import * 的一个坑
Jul 20 Python
Python计算回文数的方法
Mar 11 Python
Python3使用requests登录人人影视网站的方法
May 11 Python
利用python爬取散文网的文章实例教程
Jun 18 Python
HTML中使用python屏蔽一些基本功能的方法
Jul 07 Python
python 读取txt,json和hdf5文件的实例
Jun 05 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
Dec 24 Python
python 读取dicom文件,生成info.txt和raw文件的方法
Jan 24 Python
解析python的局部变量和全局变量
Aug 15 Python
python编写softmax函数、交叉熵函数实例
Jun 11 Python
pytorch 实现多个Dataloader同时训练
May 29 Python
python自动化测试之Selenium详解
Mar 13 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实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
PHP实现的DES加密解密类定义与用法示例
2020/11/02 PHP
php无限级分类实现评论及回复功能
2019/02/18 PHP
document.getElementById为空或不是对象的解决方法
2010/01/24 Javascript
ajax更新数据后,jquery、jq失效问题
2011/03/16 Javascript
JavaScript的各种常见函数定义方法
2014/09/16 Javascript
JavaScript实现同一页面内两个表单互相传值的方法
2015/08/12 Javascript
Angular 4 指令快速入门教程
2017/06/07 Javascript
jQuery实现所有验证通过方可提交的表单验证
2017/11/21 jQuery
浅谈基于Vue.js的移动组件库cube-ui
2017/12/20 Javascript
Vue2.0 http请求以及loading展示实例
2018/03/06 Javascript
vue指令做滚动加载和监听等
2019/05/26 Javascript
JS如何操作DOM基于表格动态展示数据
2020/10/15 Javascript
详解Vue3 Teleport 的实践及原理
2020/12/02 Vue.js
[00:53]TI3正赛第三天 DK怒破A队不败金身 现场国旗飘扬热血激昂
2013/08/10 DOTA
[53:43]VP vs NewBee Supermajor 胜者组 BO3 第三场 6.5
2018/06/06 DOTA
[01:27:30]LGD vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
[33:33]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第二场 11.27
2020/11/30 DOTA
Python实现Const详解
2015/01/27 Python
python利用paramiko连接远程服务器执行命令的方法
2017/10/16 Python
TensorFlow实现创建分类器
2018/02/06 Python
用python与文件进行交互的方法
2018/03/01 Python
Python实现的求解最小公倍数算法示例
2018/05/03 Python
python中csv文件的若干读写方法小结
2018/07/04 Python
利用python-pypcap抓取带VLAN标签的数据包方法
2019/07/23 Python
Python 实现使用空值进行赋值 None
2020/03/12 Python
使用 css3 实现圆形进度条的示例
2017/07/05 HTML / CSS
纽约著名的服装辅料来源:M&J Trimming
2017/07/26 全球购物
Hanro官网:奢华男士和女士内衣、睡衣和家居服
2018/10/25 全球购物
庆元旦文艺演出主持词
2014/03/27 职场文书
社会学专业求职信
2014/07/17 职场文书
授权委托书格式
2014/07/31 职场文书
个人职业及收入证明
2014/10/13 职场文书
写作技巧:优秀文案必备的3种结构
2019/08/19 职场文书
陶瓷类经典广告语集锦
2019/10/25 职场文书
Redis如何使用乐观锁(CAS)保证数据一致性
2022/03/25 Redis