繁体   English   中英

转义字符和原始字符串

[英]Escape characters and raw string

我想将">"替换为">" 与其他符号相同。

def escape_html(s):
    s = s.replace(">", r">")
    s = s.replace("<", "&lt;")
    s = s.replace('"', "&quot;")
    s = s.replace('&', "&amp;")
    return s

print escape_html(">")

结果是&amp;gt;

但我需要&gt;

您能帮助我理解为什么原始字符串不能帮助我。 我应该如何编写代码?

您需要替换& 第一

def escape_html(s):
    s = s.replace('&', "&amp;")
    s = s.replace(">", "&gt;")
    s = s.replace("<", "&lt;")
    s = s.replace('"', "&quot;")
    return s

因为否则,您将在其他所有替换项中替换& 这与Python原始字符串文字无关。 仅禁用\\ -样式转义。

您也可以只使用cgi.escape()函数 将第二个参数设置为True以使其转义引号。

演示:

>>> def escape_html(s):
...     s = s.replace('&', "&amp;")
...     s = s.replace(">", "&gt;")
...     s = s.replace("<", "&lt;")
...     s = s.replace('"', "&quot;")
...     return s
... 
>>> escape_html('<script>alert("Oops & bummer!")</script>')
'&lt;script&gt;alert(&quot;Oops &amp; bummer!&quot;)&lt;/script&gt;'
>>> import cgi
>>> cgi.escape('<script>alert("Oops & bummer!")</script>', True)
'&lt;script&gt;alert(&quot;Oops &amp; bummer!&quot;)&lt;/script&gt;'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM