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分割TXT文件成4K的TXT文件
May 23 Python
python实现八大排序算法(2)
Sep 14 Python
PyQt5实现下载进度条效果
Apr 19 Python
Python 实现删除某路径下文件及文件夹的实例讲解
Apr 24 Python
Python使用jsonpath-rw模块处理Json对象操作示例
Jul 31 Python
python实现朴素贝叶斯算法
Nov 19 Python
python多线程并发实例及其优化
Jun 27 Python
Python替换月份为英文缩写的实现方法
Jul 15 Python
使用Python制作表情包实现换脸功能
Jul 19 Python
python中hasattr()、getattr()、setattr()函数的使用
Aug 16 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
Aug 23 Python
Python3爬虫中识别图形验证码的实例讲解
Jul 30 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中static关键字原理的学习研究分析
2011/07/18 PHP
PDO::exec讲解
2019/01/28 PHP
PHP基于array_unique实现二维数组去重
2020/07/14 PHP
innerHTML 和 getElementsByName 在IE下面的bug 的解决
2010/04/09 Javascript
combox改进版 页面原型参考dojo的,比网上jQuery的那些combox功能强,代码更小
2010/04/15 Javascript
用js实现的模拟jquery的animate自定义动画(2.5K)
2010/07/20 Javascript
Js日期选择自动填充到输入框(界面漂亮兼容火狐)
2013/08/02 Javascript
Tab切换组件(选项卡功能)实例代码
2013/11/21 Javascript
js 本地预览的简单实现方法
2014/02/18 Javascript
js实现从数组里随机获取元素
2015/01/12 Javascript
JavaScript中innerHTML,innerText,outerHTML的用法及区别
2015/09/01 Javascript
判断数组是否包含某个元素的js函数实现方法
2016/05/19 Javascript
jquery实用技巧之输入框提示语句
2016/07/28 Javascript
Bootstrap Modal遮罩弹出层(完整版)
2016/11/21 Javascript
IntersectionObserver API 详解篇
2016/12/11 Javascript
详解angular中通过$location获取路径(参数)的写法
2017/03/21 Javascript
详解Angular 4.x Injector
2017/05/04 Javascript
在 Angular6 中使用 HTTP 请求服务端数据的步骤详解
2018/08/06 Javascript
json前后端数据交互相关代码
2018/09/19 Javascript
微信小程序利用Canvas绘制图片和竖排文字详解
2019/06/25 Javascript
Vue 中如何将函数作为 props 传递给组件的实现代码
2020/05/12 Javascript
[00:37]2016完美“圣”典风云人物:rOtk宣传片
2016/12/09 DOTA
Python实现向QQ群成员自动发邮件的方法
2014/11/19 Python
Python实现插入排序和选择排序的方法
2019/05/12 Python
python正则表达式的懒惰匹配和贪婪匹配说明
2020/07/13 Python
事业单位个人应聘自荐信
2013/09/21 职场文书
应届毕业生个人求职自荐信
2014/01/06 职场文书
二年级学生评语大全
2014/04/23 职场文书
大学本科生职业生涯规划书范文
2014/09/14 职场文书
村干部群众路线教育活动对照检查材料
2014/10/01 职场文书
部门经理迟到检讨书
2015/02/16 职场文书
看雷锋电影观后感
2015/06/10 职场文书
化验室安全管理制度
2015/08/06 职场文书
Python数据类型最全知识总结
2021/05/31 Python
win10键盘驱动怎么修复?Win10键盘驱动修复小技巧
2022/04/06 数码科技
JS前端轻量fabric.js系列之画布初始化
2022/08/05 Javascript