如何在Pango标记中转义字符?

13 投票
3 回答
4912 浏览
提问于 2025-04-15 16:09

我的程序有一个 gtk.TreeView,它用来显示一个 gtk.ListStore。这个 gtk.ListStore 里面包含了一些字符串,像这样:

"<span size='medium'><b>"+site_title+"</b></span>"+"\n"+URL

其中 URL 显然是一个网址字符串。有时候,URL 中会有一些字符,让 pango 无法正确解析这些内容。

有没有办法把整个 URL 处理一下,让 pango 忽略它,这样就可以原样显示了?如果没有,那我该怎么处理 URL 中的特殊字符呢?

3 个回答

0

//编辑队列已满,所以在这里发布

GLib.markup_escape_text 来自 PyGObject

示例

>>> from gi.repository import GLib
>>> GLib.markup_escape_text('abc \b \f < & >')
'abc &#x8; &#xc; &lt; &amp; &gt;'
>>> 

Python API 文档
https://lazka.github.io/pgi-docs/#GLib-2.0/functions.html#GLib.markup_escape_text https://pygobject.readthedocs.io

C API 文档
https://docs.gtk.org/glib/func.markup_escape_text.html

22

glib.markup_escape_text 可能是使用 GTK 时更标准的方法。

2

你需要对这些值进行转义。我不太确定Pango具体需要什么格式,但看起来像是HTML格式,而cgi.escape这个函数可能正是你所需要的。

import cgi
print "<span size='medium'><b>%s</b></span>\n%s" %
      (cgi.escape(site_title), cgi.escape(URL))

撰写回答