在 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'& < >')
e2 = literal.escape(e1)
e2
Out[5]: literal(u'& < >')
s = ''.join(e1)
s
Out[7]: u'& < >'
与 Python 3.4.3:
from webhelpers2.html.builder import literal
e1 = literal.escape('& < >')
e1
literal('& < >')
e2 = literal.escape(e1)
e2
Out[5]: literal('& < >')
s = ''.join(e1)
s
Out[7]: '& < >'
在我的一个项目中,我使用 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'& < >')
e2 = literal.escape(e1)
e2
Out[5]: literal(u'& < >')
s = ''.join(e1)
s
Out[7]: u'& < >'
与 Python 3.4.3:
from webhelpers2.html.builder import literal
e1 = literal.escape('& < >')
e1
literal('& < >')
e2 = literal.escape(e1)
e2
Out[5]: literal('& < >')
s = ''.join(e1)
s
Out[7]: '& < >'