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 01 Python
Python中super()函数简介及用法分享
Jul 11 Python
python3+PyQt5实现自定义窗口部件Counters
Apr 20 Python
Python从函数参数类型引出元组实例分析
May 28 Python
解决Python3 抓取微信账单信息问题
Jul 19 Python
浅析python 中大括号中括号小括号的区分
Jul 29 Python
pandas实现将日期转换成timestamp
Dec 07 Python
Python语法之精妙的十个知识点(装B语法)
Jan 18 Python
Python对称的二叉树多种思路实现方法
Feb 28 Python
Python 创建TCP服务器的方法
Jul 28 Python
python3 googletrans超时报错问题及翻译工具优化方案 附源码
Dec 23 Python
基于Python绘制子图及子图刻度的变换等的问题
May 23 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 str_pad() 将字符串填充成指定长度的字符串
2010/02/23 PHP
php结合正则获取字符串中数字
2015/06/19 PHP
php调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
2015/07/29 PHP
PHP实现可自定义样式的分页类
2016/03/29 PHP
PHP类和对象相关系统函数与运算符小结
2016/09/28 PHP
PHP数组对象与Json转换操作实例分析
2019/10/22 PHP
加载远程图片时,经常因为缓存而得不到更新的解决方法(分享)
2013/06/26 Javascript
Javascript操作URL函数修改版
2013/11/07 Javascript
js中substring和substr的定义和用法
2014/05/05 Javascript
js字符串完全替换函数分享
2014/12/03 Javascript
javascript中callee与caller的区别分析
2015/04/20 Javascript
移动手机APP手指滑动切换图片特效附源码下载
2015/11/30 Javascript
jquery easyui datagrid实现增加,修改,删除方法总结
2016/05/25 Javascript
Jquery on方法绑定事件后执行多次的解决方法
2016/06/02 Javascript
浅谈jQuery效果函数
2016/09/16 Javascript
JavaScript中call和apply方法的区别实例分析
2018/08/03 Javascript
vue+element项目中过滤输入框特殊字符小结
2019/08/07 Javascript
详解钉钉小程序组件之自定义模态框(弹窗封装实现)
2020/03/07 Javascript
react 生命周期实例分析
2020/05/18 Javascript
vue动态设置页面title的方法实例
2020/08/23 Javascript
github配置使用指南
2014/11/18 Python
用python读写excel的方法
2014/11/18 Python
python 读写excel文件操作示例【附源码下载】
2019/06/19 Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
2020/02/06 Python
Python3.9又更新了:dict内置新功能
2020/02/28 Python
python利用opencv实现SIFT特征提取与匹配
2020/03/05 Python
python实现音乐播放和下载小程序功能
2020/04/26 Python
canvas如何实现多张图片编辑的图片编辑器
2020/03/10 HTML / CSS
英国最大的割草机购买网站:Just Lawnmowers
2019/11/02 全球购物
师范学院美术系毕业生自我鉴定
2014/01/29 职场文书
2014年政风行风自查自纠报告
2014/10/21 职场文书
市委召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
欠款纠纷起诉状
2015/05/19 职场文书
学校元旦晚会开场白
2015/05/29 职场文书
教师读书活动心得体会
2016/01/14 职场文书
Windows server 2022创建创建林、域树、子域的步骤
2022/06/25 Servers