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 15 Python
Python编程判断一个正整数是否为素数的方法
Apr 14 Python
python3+PyQt5实现柱状图
Apr 24 Python
Django 视图层(view)的使用
Nov 09 Python
使用Python的toolz库开始函数式编程的方法
Nov 15 Python
python使用Turtle库绘制动态钟表
Nov 19 Python
利用Pycharm断点调试Python程序的方法
Nov 29 Python
Django 中间键和上下文处理器的使用
Mar 17 Python
搭建python django虚拟环境完整步骤详解
Jul 08 Python
python基于pdfminer库提取pdf文字代码实例
Aug 15 Python
使用python去除图片白色像素的实例
Dec 12 Python
拒绝盗图!教你怎么用python给图片加水印
Jun 04 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
咖啡界又出新概念,无需咖啡豆的分子咖啡
2021/03/03 咖啡文化
将二维数组转为一维数组的2种方法
2014/05/26 PHP
Codeigniter的dom类用法实例
2015/06/26 PHP
PHP如何实现订单的延时处理详解
2017/12/30 PHP
thinkPHP和onethink微信支付插件分享
2019/08/11 PHP
javascript 二进制运算技巧解析
2012/11/27 Javascript
jQuery基本过滤选择器使用介绍
2013/04/18 Javascript
基于jquery实现在线选座订座之影院篇
2015/08/24 Javascript
jQuery Mobile开发中日期插件Mobiscroll使用说明
2016/03/02 Javascript
jQuery表格插件datatables用法汇总
2016/03/29 Javascript
jQuery+正则+文本框只能输入数字的实现方法
2016/10/07 Javascript
两种简单的跨域方法(jsonp、php)
2017/01/02 Javascript
bootstrap输入框组使用方法
2017/02/07 Javascript
使用jquery datatable和bootsrap创建表格实例代码
2017/03/17 Javascript
Vue Echarts实现可视化世界地图代码实例
2019/05/07 Javascript
element-ui table组件如何使用render属性的实现
2019/11/04 Javascript
JavaScript canvas实现跟随鼠标事件
2020/02/10 Javascript
手把手教您实现react异步加载高阶组件
2020/04/07 Javascript
如何手写简易的 Vue Router
2020/10/10 Javascript
[01:19:35]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第二局
2016/03/05 DOTA
复习Python中的字符串知识点
2015/04/14 Python
python学习数据结构实例代码
2015/05/11 Python
Python中使用strip()方法删除字符串中空格的教程
2015/05/20 Python
Python+OpenCV图片局部区域像素值处理详解
2019/01/23 Python
Python可视化mhd格式和raw格式的医学图像并保存的方法
2019/01/24 Python
Django 项目重命名的实现步骤解析
2019/08/14 Python
基于Python和PyYAML读取yaml配置文件数据
2020/01/13 Python
5 分钟读懂Python 中的 Hook 钩子函数
2020/12/09 Python
基于HTML5的WebGL经典3D虚拟机房漫游动画
2017/11/15 HTML / CSS
2014年预备党员学习两会心得体会
2014/03/17 职场文书
yy生日主持词
2014/03/20 职场文书
房屋租赁协议书
2014/04/10 职场文书
2014年教师德育工作总结
2014/11/10 职场文书
意向协议书
2015/01/27 职场文书
会议通知
2015/04/15 职场文书
教师节表彰会主持词
2015/07/06 职场文书