【Python Cookbook】S02E15 在文本中处理 HTML 和 XML 实体

目录

问题

我们如果想要将 HTML 实体以及 XML 实体内容替换成相对应的文本内容,怎么做?

解决方案

python 复制代码
s = "Elements are written as '<tag>txt</tag>'."

import html
print(html.escape(s))
print("-"*20, "Disable escaping of quotes", "-"*20)
print(html.escape(s, quote=False))

结果为

python 复制代码
Elements are written as &#x27;&lt;tag&gt;txt&lt;/tag&gt;&#x27;.
-------------------- Disable escaping of quotes --------------------
Elements are written as '&lt;tag&gt;txt&lt;/tag&gt;'.

其中,解析出的各结果解释如下:

  • &#x27 代表 "
  • &lt 代表 <
  • &gt 代表 >

在第二个输出中,因为我们在 html.escape() 函数中添加参数 quote=False ,所以在结果中并不会解析 " 引号~

如果要生成 ASCII 文本,并且想针对非 ASCII 字符将其对应的字符编码实体嵌入到文本中,可以在各种同 I/O 相关的函数中使用 errors='xmlcharrefreplace' 参数来实现。

python 复制代码
s = "Spicy Jalapeño"
print(s.encode("ascii", errors="xmlcharrefreplace"))

结果:

python 复制代码
b'Spicy Jalape&#241;o'

如果由于某种原因在得到的文本中带有一些实体,而我们又想要得到其内容,可以利用 HTML 以及 XML 解析器自带的功能函数和方法来完成。

python 复制代码
s = "Spicy &quot;Jalape&#241;o&quot"
import html
print(html.unescape(s))
t = "The prompt is &gt;&gt;&gt;"
from xml.sax.saxutils import unescape
print(unescape(t))

结果

python 复制代码
Spicy "Jalapeño"
The prompt is >>>

讨论

在生成 HTML 或 XML 文档时,适当的对特殊字符做转义处理推荐使用如 html.escape() 这样的函数。

而如果要反过来,即将 HTML 或 XML 实体转换成对应的字符,推荐使用像 html.unescape() 或 xml.sax.saxutils.unescape() 这样的函数。

相关推荐
xzal127 分钟前
GESP Python笔记
笔记·python·算法
半日闲dusknook34 分钟前
我给 AI 写了个「音频编译器」:把「听起来还行」变成 PASS/FAIL
python
在世修行1 小时前
干货:信号槽
python·信号槽
Wx-bishekaifayuan1 小时前
springboot生活易购超市管理系统54086-计算机课程设计、毕业设计
spring boot·后端·python·django·课程设计·express·旅游
数字融合1 小时前
透明化数字孪生智慧养老平台运维服务项目
人工智能·python·virtualenv
smj2302_796826521 小时前
解决leetcode第4064题至多一次取反能被k整除的最长子数组II
python·算法·leetcode
happylifetree2 小时前
Python01-08:练习
python
空奈qwq2 小时前
ANN 全连接神经网络入门指南:从神经元到深度学习的第一步
人工智能·python·深度学习·神经网络·算法·机器学习
维克兜率天3 小时前
【维克】弹性策略:用“乖离率“捕捉超跌反弹
android·开发语言·python·深度学习·kotlin·量化
SamChan903 小时前
PDF页面旋转与CropBox陷阱:译文回填位置总是错位的根因实测
python·ai·pdf·wpf