Python 在字符串中处理html 和xml

枫铃3年前 (2021-09-30)Python246

问题:

想将HTML 或者XML 实体如&entity;&#code; 替换为对应的文本。再者,你需要转换文本中特定的字符(比如<, >, 或&)。

解决方案:

1.想替换文本字符串中的< 或者> ,使用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>".

2.想将非ASCII 文本对应的编码实体嵌入进去,可以给某些I/O 函数传递参数errors='xmlcharrefreplace'来达到这个目。

>>> s = 'Spicy Jalapeño'
>>> s.encode('ascii', errors='xmlcharrefreplace')
b'Spicy Jalapeño'
>>>

3.为了替换文本中的编码实体,你需要使用另外一种方法。如果你正在处理HTML或者XML 文本,试着先使用一个合适的HTML 或者XML 解析器。通常情况下,这些工具会自动替换这些编码值,你无需担心。有时候,如果你接收到了一些含有编码值的原始文本,需要手动去做替换,通常你只需要使用HTML 或者XML 解析器的一些相关工具函数/方法即可。

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> s = 'Spicy "Jalapeño&quot.'
>>> 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 >>>'
>>>

4.在生成HTML 或者XML 文本的时候,如果正确的转换特殊标记字符是一个很容易被忽视的细节。特别是当你使用print() 函数或者其他字符串格式化来产生输出的时候。使用像html.escape()的工具函数可以很容易的解决这类问题。如果你想以其他方式处理文本, 还有一些其他的工具函数比如xml.sax.saxutils.unescapge() 可以帮助你。然而,你应该先调研清楚怎样使用一个合适的解析器。比如,如果你在处理HTML 或XML 文本,使用某个解析模块比如html.parsexml.etree.ElementTree 已经帮你自动处理了相关的替换细节。

相关文章

利用python同步windows和linux文件

写python脚本的初衷,每次在windows编辑完文件后,想同步到linux上去,只能够登录服务器,...

爬虫基本原理

爬虫基本原理 一、爬虫是什么? 百度百科和维基百科对网络爬虫的定义:简单来说爬虫就是抓取目标网站内容的工具,一般是根据定义的行...

Django 函数和方法的区别

函数和方法的区别 1、函数要手动传self,方法不用传 2、如果是一个函数,用类名去调用,如果是一个方法...

Django 知识补漏单例模式

单例模式:(说白了就是)创建一个类的实例。在 Python 中,我们可以用多种方法来实现单例模式&#x...

Django基础知识MTV

Django简介 Django是使用Python编写的一个开源Web框架。可以用它来快速搭建一个高性能的网站。 Django也是一个MVC框架。但是在Dj...

Python mysql 索引原理与慢查询优化

一 介绍 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。