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 06 Python
python实现的DES加密算法和3DES加密算法实例
Jun 03 Python
在Django框架中运行Python应用全攻略
Jul 17 Python
python控制台中实现进度条功能
Nov 10 Python
python多维数组切片方法
Apr 13 Python
Python和Java的语法对比分析语法简洁上python的确完美胜出
May 10 Python
如何通过50行Python代码获取公众号全部文章
Jul 12 Python
Python如何基于smtplib发不同格式的邮件
Dec 30 Python
JupyterNotebook 输出窗口的显示效果调整方法
Apr 13 Python
python如何修改文件时间属性
Feb 05 Python
Python中常见的反爬机制及其破解方法总结
Jun 10 Python
一篇文章带你了解Python和Java的正则表达式对比
Sep 15 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和MySQL保存和输出图片
2006/10/09 PHP
WordPres对前端页面调试时的两个PHP函数使用小技巧
2015/12/22 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
PHP JWT初识及其简单示例
2018/10/10 PHP
xml 封装与解析(javascript和C#中)
2009/07/26 Javascript
jquery attr 设定src中含有&amp;(宏)符号问题的解决方法
2011/07/26 Javascript
nodejs简单实现中英文翻译
2015/05/04 NodeJs
JS实现仿Windows7风格的网页右键菜单效果代码
2015/09/11 Javascript
使用Jasmine和Karma对AngularJS页面程序进行测试
2016/03/05 Javascript
javascript常用的设计模式
2017/02/09 Javascript
JS实现微信里判断页面是否被分享成功的方法
2017/06/06 Javascript
JavaScript正则表达式简单实用实例
2017/06/23 Javascript
浅谈 Vue 项目优化的方法
2017/12/16 Javascript
详解JavaScript事件循环机制
2018/09/07 Javascript
Vue搭建后台系统需要注意的问题
2019/11/08 Javascript
Vue实现简单的拖拽效果
2020/08/25 Javascript
uin-app+mockjs实现本地数据模拟
2020/08/26 Javascript
Vue项目配置跨域访问和代理proxy设置方式
2020/09/08 Javascript
[02:32]DOTA2英雄基础教程 美杜莎
2014/01/07 DOTA
[45:25]完美世界DOTA2联赛循环赛 PXG vs IO 第一场 11.06
2020/11/09 DOTA
Python 实现使用dict 创建二维数据、DataFrame
2018/04/13 Python
使用Template格式化Python字符串的方法
2019/01/22 Python
Python3 实现文件批量重命名示例代码
2019/06/03 Python
基于Python pyecharts实现多种图例代码解析
2020/08/10 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
2021/03/03 Python
德国便宜的宠物店:Brekz.de
2020/10/23 全球购物
致跳远运动员加油稿
2014/02/11 职场文书
民生工程实施方案
2014/03/22 职场文书
同居协议书范本
2014/04/23 职场文书
民族团结好少年事迹材料
2014/08/19 职场文书
班子查摆四风个人对照检查材料思想汇报
2014/10/04 职场文书
婚内分居协议书范文
2014/11/26 职场文书
Python中with上下文管理协议的作用及用法
2022/03/18 Python
vue3语法糖内的defineProps及defineEmits
2022/04/14 Vue.js
CentOS MySql8 远程连接实战
2022/04/19 MySQL
Android Studio实现带三角函数对数运算功能的高级计算器
2022/05/20 Java/Android