圆月山庄资源网 Design By www.vgjia.com

问题

你想将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 &quot;&lt;tag&gt;text&lt;/tag&gt;&quot;.

> # Disable escaping of quotes
> print(html.escape(s, quote=False))
Elements are written as "&lt;tag&gt;text&lt;/tag&gt;".
>

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

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

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

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

> s = 'Spicy &quot;Jalape&#241;o&quot.'
> from html.parser import HTMLParser
> p = HTMLParser()
> p.unescape(s)
'Spicy "Jalapeño".'
>
> t = 'The prompt is &gt;&gt;&gt;'
> 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,html,Python,xml,Python,字符串处理html和XML

圆月山庄资源网 Design By www.vgjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
圆月山庄资源网 Design By www.vgjia.com

RTX 5090要首发 性能要翻倍!三星展示GDDR7显存

三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。

首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。

据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。