为编程爱好者分享易语言教程源码的资源网
好用的代理IP,游戏必备 ____广告位招租____ 服务器99/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器
好用的代理IP,游戏必备 ____广告位招租____ 服务器低至38/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器

网站首页 > 技术教程 正文

在字符串中处理 html 和 xml

三叶资源网 2022-06-25 12:00:57 技术教程 492 ℃ 0 评论

学习《Python Cookbook》第三版

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

如果你想替换文本字符串中的 ‘<’ 或者 ‘>’ ,使用 html.escape() 函数可以很容易的完成。比如:

import html

my_str = 'Elements are written as "<tag>text</tag>".'
print(my_str)	# Elements are written as "<tag>text</tag>".
print(html.escape(my_str))	# Elements are written as "<tag>text</tag>".
print(html.escape(my_str, quote=False))	# Elements are written as "<tag>text</tag>".

对于escape()方法的官方解释:

html.escape(s, quote=True)

Convert the characters &, < and > in string s to HTML-safe sequences. Use this if you need to display text that might contain such characters in HTML. If the optional flag quote is true, the characters (") and (') are also translated; this helps for inclusion in an HTML attribute value delimited by quotes, as in <a href="...">.

将字符串s中的字符&,<和>转换为HTML安全序列。 如果您需要在HTML中显示可能包含此类字符的文本,请使用此选项。 如果可选的标记quote为true,则还会翻译字符(“)和(');这有助于包含在用引号分隔的HTML属性值中,如<a href="...">中所示。

如果你正在处理的是 ASCII 文本,并且想将非 ASCII 文本对应的编码实体嵌入进去,可以给某些 I/O 函数传递参数 errors='xmlcharrefreplace' 来达到这个目。比如:

my_str = 'Spicy Jalape?o'

print(my_str.encode('ascii', errors='xmlcharrefreplace'))	# b'Spicy Jalape?o'

其中,xmlcharrefreplace的作用是:将非ascii字符替换为xml合适字符引用

字符引用通过其通用字符集/ Unicode代码点引用字符,并使用以下格式:

&#nnnn; 或者 &#xhhhh;

上边的例子非ascii码字符?,被替换为ñ;

更多的XML字符引用,可以查看WIKI网址:

https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references

为了替换文本中的编码实体,你需要使用另外一种方法。如果你正在处理 HTML或者 XML 文本,试着先使用一个合适的 HTML 或者 XML 解析器。通常情况下,这些工具会自动替换这些编码值,你无需担心。

有时候,如果你接收到了一些含有编码值的原始文本,需要手动去做替换,通常你只需要使用 HTML 或者 XML 解析器的一些相关工具函数/方法即可。比如:

my_str_special = 'This is a special character "<è>"'
print(html.unescape(my_str_special))	# This is a special character "<è>"


from xml.sax.saxutils import unescape
my_str_special_1 = 'The prompt is >>>'
print(unescape(my_str_special_1))	# The prompt is >>>

在生成 HTML 或者 XML 文本的时候,如果正确的转换特殊标记字符是一个很容易被忽视的细节。特别是当你使用 print() 函数或者其他字符串格式化来产生输出的时候。使用像 html.escape() 的工具函数可以很容易的解决这类问题。

如果你想以其他方式处理文本,还有一些其他的工具函数比如xml.sax.saxutils.unescapge() 可以帮助你。然而,你应该先调研清楚怎样使用一个合适的解析器。比如,如果你在处理 HTML 或 XML 文本,使用某个解析模块比如html.parse 或 xml.etree.ElementTree 已经帮你自动处理了相关的替换细节。

Tags:

来源:三叶资源网,欢迎分享,公众号:iisanye,(三叶资源网⑤群:21414575

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

百度站内搜索
关注微信公众号
三叶资源网⑤群:三叶资源网⑤群

网站分类
随机tag
易语言仿QQ音乐播放器机构进度复制文件夹RawSocket创建快捷方式二维码自动裁剪网页POSTAccessiblejson是用来干嘛的变量数据交换小程序百度语音文件批量下载scriptcontrol对象SmartQQ协议源码RSAJS加密按键精灵基础练习EDB数据库
最新评论