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互斥锁
Apr 05 Python
python连接mongodb密码认证实例
Oct 16 Python
python利用百度AI实现文字识别功能
Nov 27 Python
python用fsolve、leastsq对非线性方程组求解
Dec 15 Python
对python周期性定时器的示例详解
Feb 19 Python
python实现对象列表根据某个属性排序的方法详解
Jun 11 Python
python覆盖写入,追加写入的实例
Jun 26 Python
python利用7z批量解压rar的实现
Aug 07 Python
Python读取文件内容为字符串的方法(多种方法详解)
Mar 04 Python
Django values()和value_list()的使用
Mar 31 Python
Python+Django+MySQL实现基于Web版的增删改查的示例代码
May 13 Python
Python 生成短8位唯一id实战教程
Jan 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中通过ADODB库实现调用Access数据库之修正版本
2006/12/31 PHP
PHP学习之数组的定义和填充
2011/04/17 PHP
PHP读取txt文件的内容并赋值给数组的代码
2011/11/03 PHP
destoon各类调用汇总
2014/06/20 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
JavaScript 应用技巧集合[推荐]
2009/08/30 Javascript
JavaScript 学习笔记(十五)
2010/01/28 Javascript
mysql输出数据赋给js变量报unterminated string literal错误原因
2010/05/22 Javascript
extjs grid设置某列背景颜色和字体颜色的实现方法
2010/09/06 Javascript
Jquery拖拽并简单保存的实现代码
2010/11/28 Javascript
关于jQuery参考实例 1.0 jQuery的哲学
2013/04/07 Javascript
jquery退出each循环的写法
2014/02/26 Javascript
js控制容器隐藏出现防止样式变化的两种方法
2014/04/25 Javascript
Javascript学习指南
2014/12/01 Javascript
JavaScript获得指定对象大小的方法
2015/07/01 Javascript
原生JavaScript实现滚动条效果
2020/03/24 Javascript
JS实现兼容各种浏览器的高级拖动方法完整实例【测试可用】
2016/06/21 Javascript
vue过滤器用法实例分析
2019/03/15 Javascript
Vue侦测相关api的实现方法
2019/05/22 Javascript
vue移动端实现手机左右滑动入场动画
2020/06/17 Javascript
vue相关配置文件详解及多环境配置详细步骤
2020/05/19 Javascript
[49:58]完美世界DOTA2联赛PWL S3 Magma vs DLG 第一场 12.18
2020/12/19 DOTA
尝试使用Python多线程抓取代理服务器IP地址的示例
2015/11/09 Python
numpy数组广播的机制
2019/07/12 Python
python如何实现从视频中提取每秒图片
2020/10/22 Python
信号生成及DFT的python实现方式
2020/02/25 Python
tensorflow模型文件(ckpt)转pb文件的方法(不知道输出节点名)
2020/04/22 Python
IE8下CSS3选择器nth-child() 不兼容问题的解决方法
2016/11/16 HTML / CSS
介绍一下mysql的日期和时间函数
2013/03/28 面试题
员工自我鉴定
2013/10/09 职场文书
电子信息科学专业自荐信
2014/01/30 职场文书
护士岗位求职应聘自荐书范文
2014/02/12 职场文书
协议书模板
2014/04/23 职场文书
公务员诚信承诺书
2014/05/26 职场文书
汽车检测与维修专业求职信
2014/07/04 职场文书
如何设计高效合理的MySQL查询语句
2021/05/26 MySQL