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中用pycurl监控http响应时间脚本分享
Feb 02 Python
python字典值排序并取出前n个key值的方法
Oct 17 Python
浅谈django url请求与数据库连接池的共享问题
Aug 29 Python
pygame实现俄罗斯方块游戏(基础篇1)
Oct 29 Python
python自动化实现登录获取图片验证码功能
Nov 20 Python
python 实现一个反向单位矩阵示例
Nov 29 Python
python next()和iter()函数原理解析
Feb 07 Python
keras的load_model实现加载含有参数的自定义模型
Jun 22 Python
利用Python实现朋友圈中的九宫格图片效果
Sep 03 Python
Python基于Faker假数据构造库
Nov 30 Python
python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析
Apr 14 Python
总结Pyinstaller打包的高级用法
Jun 28 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
当年上海收录机产品生产,进口和价格情况
2021/03/04 无线电
php 清除网页病毒的方法
2008/12/05 PHP
yiic命令时提示“php.exe”不是内部或外部命令的解决方法
2014/12/18 PHP
PHP实现类似题库抽题效果
2018/08/16 PHP
PHP快速排序算法实现的原理及代码详解
2019/04/03 PHP
计算世界完全对称日的js代码,粗糙版
2011/11/04 Javascript
面向对象的Javascript之一(初识Javascript)
2012/01/20 Javascript
escape编码与unescape解码汉字出现乱码的解决方法
2014/07/02 Javascript
JavaScript设计模式之观察者模式(发布者-订阅者模式)
2014/09/24 Javascript
bootstrap实现弹窗和拖动效果
2016/01/03 Javascript
详解原生JavaScript实现jQuery中AJAX处理的方法
2016/05/10 Javascript
Extjs 中的 Treepanel 实现菜单级联选中效果及实例代码
2017/08/22 Javascript
angularjs实现时间轴效果的示例代码
2017/11/29 Javascript
JS实现多物体运动的方法详解
2018/01/23 Javascript
Vuex的基本概念、项目搭建以及入坑点
2018/11/04 Javascript
在Create React App中启用Sass和Less的方法示例
2019/01/16 Javascript
Vue 如何使用props、emit实现自定义双向绑定的实现
2020/06/05 Javascript
Vue数组响应式操作及高阶函数使用代码详解
2020/08/01 Javascript
详细介绍Ruby中的正则表达式
2015/04/10 Python
Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例
2018/03/15 Python
详解python中TCP协议中的粘包问题
2019/03/22 Python
Pandas读取csv时如何设置列名
2020/06/02 Python
JSF面试题:Jsf中的核心类用那些?有什么作用?LiftCycle六大生命周期是什么?
2014/07/17 面试题
自考毕业自我鉴定范文
2013/10/27 职场文书
自荐信包含哪些内容
2013/10/30 职场文书
2014年创先争优活动总结
2014/05/04 职场文书
三八活动策划方案
2014/08/17 职场文书
医德医魂心得体会
2014/09/11 职场文书
工伤事故赔偿协议书(标准)
2014/09/29 职场文书
党员群众路线教育实践活动剖析材料
2014/10/10 职场文书
鸡毛信观后感
2015/06/11 职场文书
小学中队长竞选稿
2015/11/20 职场文书
教师外出学习心得体会
2016/01/18 职场文书
Django与数据库交互的实现
2021/06/03 Python
分享几个简单MySQL优化小妙招
2022/03/31 MySQL
MySQL索引失效场景及解决方案
2022/07/23 MySQL