在 Python 中转义字符,但忽略已经转义的字符

Escaping characters in Python, but ignoring already escaped characters

在我的一个项目中,我使用 cgi.escape() 来转义我从资源中获得的一组标题。这些标题可能来自 Youtube 或其他任何地方,可能需要转义。

我遇到的问题是,如果一个标题已经从 Youtube 转义并且我将它传递到 cgi.escape(),我最终会得到 double-escaped 个标题,这会弄乱后面的部分我的项目。

是否有一个库可以对字符串进行转义,但会检查一段是否已经转义并忽略它?

您可以先resolve the possibly-escaped strings,然后将它们传递给您自己进行的任何逃逸。

如果您知道您的输入已经被转义,请先取消转义。然后在它需要的地方之前转义它。

webhelpers2.html.builder.literal代表一个"HTML literal string, which will not be further escaped"。它有一个用于转义 HTML 并返回文字的转义方法,并且文字实例可以使用 ''.join(literal_instance)

转换为字符串

例如使用 Python 2.7.10:

从webhelpers2.html.builder导入文字

e1 = literal.escape('& < >')
e1
Out[3]: literal(u'&amp; &lt; &gt;')

e2 = literal.escape(e1)
e2
Out[5]: literal(u'&amp; &lt; &gt;')

s = ''.join(e1)
s
Out[7]: u'&amp; &lt; &gt;'

与 Python 3.4.3:

from webhelpers2.html.builder import literal

e1 = literal.escape('& < >')
e1
literal('&amp; &lt; &gt;')

e2 = literal.escape(e1)
e2
Out[5]: literal('&amp; &lt; &gt;')

s = ''.join(e1)
s
Out[7]: '&amp; &lt; &gt;'