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 文件和路径操作函数小结
Nov 23 Python
跟老齐学Python之坑爹的字符编码
Sep 28 Python
详解Python之数据序列化(json、pickle、shelve)
Mar 30 Python
Python 字符串转换为整形和浮点类型的方法
Jul 17 Python
浅谈python之新式类
Aug 12 Python
Django forms组件的使用教程
Oct 08 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
Jun 27 Python
python pandas时序处理相关功能详解
Jul 03 Python
django的ORM操作 增加和查询
Jul 26 Python
python之PyQt按钮右键菜单功能的实现代码
Aug 17 Python
将tensorflow模型打包成PB文件及PB文件读取方式
Jan 23 Python
Django ValuesQuerySet转json方式
Mar 16 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 一个随机字符串生成代码
2010/05/26 PHP
用php实现百度网盘图片直链的代码分享
2012/11/01 PHP
一个简单至极的PHP缓存类代码
2015/10/23 PHP
PHP排序算法之希尔排序(Shell Sort)实例分析
2018/04/20 PHP
Prototype使用指南之range.js
2007/01/10 Javascript
JavaScript 笔记二 Array和Date对象方法
2010/05/22 Javascript
extjs表格文本启用选择复制功能具体实现
2013/10/11 Javascript
js图片处理示例代码
2014/05/12 Javascript
js动态修改表格行colspan列跨度的方法
2015/03/30 Javascript
详解JavaScript数组过滤相同元素的5种方法
2017/05/23 Javascript
微信小程序开发的基本流程步骤
2019/01/31 Javascript
全面解析JavaScript Module模式
2020/07/24 Javascript
Vue 使用iframe引用html页面实现vue和html页面方法的调用操作
2020/11/16 Javascript
[04:16]DOTA2全国高校联赛16强抽签
2018/05/02 DOTA
Python实现的金山快盘的签到程序
2013/01/17 Python
在Python中用split()方法分割字符串的使用介绍
2015/05/20 Python
解决python文件字符串转列表时遇到空行的问题
2017/07/09 Python
OpenCV2.3.1+Python2.7.3+Numpy等的配置解析
2018/01/05 Python
一道python走迷宫算法题
2018/01/22 Python
Django中日期处理注意事项与自定义时间格式转换详解
2018/08/06 Python
Python爬虫文件下载图文教程
2018/12/23 Python
Python multiprocess pool模块报错pickling error问题解决方法分析
2019/03/20 Python
pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解
2020/01/02 Python
6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)
2020/01/06 Python
Keras实现将两个模型连接到一起
2020/05/23 Python
canvas画图被放大且模糊的解决方法
2020/08/11 HTML / CSS
特罗佩亚包官方网站:Tropea
2017/01/03 全球购物
柒牌官方商城:中国男装优秀品牌
2017/06/30 全球购物
英国知名化妆品网站:Revolution Beauty(原TAM Beauty)
2018/02/28 全球购物
任课老师推荐信范文
2013/11/24 职场文书
幼儿园义卖活动方案
2014/01/17 职场文书
销售内勤岗位职责
2014/04/15 职场文书
国际商务英语专业求职信
2014/07/08 职场文书
Redis遍历所有key的两个命令(KEYS 和 SCAN)
2021/04/12 Redis
只用50行Python代码爬取网络美女高清图片
2021/06/02 Python
Python中三种花式打印的示例详解
2022/03/19 Python