Как экранировать символы в разметке Pango?

В моей программе есть gtk.TreeView, который отображает gtk.ListStore. gtk.ListStore содержит такие строки:

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

Где URL — это (очевидно) строка URL. Иногда в URL есть символы, из-за которых pango не может проанализировать разметку.

Есть ли способ избежать URL в целом, чтобы панго просто игнорировал его, чтобы он отображался буквально? Если нет, как мне «экранировать» специальные символы в URL-адресах?


person Isaiah    schedule 19.11.2009    source источник


Ответы (2)


Вам нужно избежать значений. Я не уверен, какой именно формат требуется Pango, но он выглядит как HTML и Функция cgi.escape может быть всем, что вам нужно.

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

glib.markup_escape_text может быть более канонический подход при использовании GTK.

person Ali Afshar    schedule 25.11.2009
comment
В последней версии PyGTK это выглядит как gobject.markup_escape_text - person Steven T. Snyder; 05.03.2013