我想用">"
替换">"
。其他符号也一样。
def escape_html(s):
s = s.replace(">", r">")
s = s.replace("<", "<")
s = s.replace('"', """)
s = s.replace('&', "&")
return s
print escape_html(">")
结果为&gt;
但我需要>
你能帮我理解为什么原始字符串对我不起作用。我该如何编写代码?
答案 0 :(得分:2)
您需要先替换&
:
def escape_html(s):
s = s.replace('&', "&")
s = s.replace(">", ">")
s = s.replace("<", "<")
s = s.replace('"', """)
return s
因为否则您将替换您所做的每个其他替换中的&
。这与Python原始字符串文字无关;只会禁用\
- 样式转义。
您也可以使用cgi.escape()
function;将第二个参数设置为True
以使其转义引号。
演示:
>>> def escape_html(s):
... s = s.replace('&', "&")
... s = s.replace(">", ">")
... s = s.replace("<", "<")
... s = s.replace('"', """)
... return s
...
>>> escape_html('<script>alert("Oops & bummer!")</script>')
'<script>alert("Oops & bummer!")</script>'
>>> import cgi
>>> cgi.escape('<script>alert("Oops & bummer!")</script>', True)
'<script>alert("Oops & bummer!")</script>'