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

时间:2015-09-21 23:36:37

标签: python escaping cgi

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

我遇到的问题是,如果标题已经从Youtube转义并将其传递到cgi.escape(),我最终会获得双重转义的标题,这会搞乱我项目的后续部分

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

3 个答案:

答案 0 :(得分:1)

webhelpers2.html.builder.literal表示“HTML文字字符串,不会进一步转义”。它有一个转义HTML的转义方法,并返回一个文字,一个文字实例可以转换成一个带有'.join(literal_instance)的字符串

例如使用Python 2.7.10:

来自webhelpers2.html.builder import literal

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;'

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

你可以先resolve the possibly-escaped strings,然后将它们传递给你自己逃跑的任何东西。