Python函数htmlspecialchars()中是否有类似或等效的函数?到目前为止,我发现的最接近的是htmlentitydefs.entitydefs()。
答案 0 :(得分:12)
我所知道的最近的事情是cgi.escape。
答案 1 :(得分:6)
from django.utils.html import escape
print escape('<div class="q">Q & A</div>')
答案 2 :(得分:3)
您可能需要xml.sax.saxutils.escape:
from xml.sax.saxutils import escape
escape(unsafe, {'"':'"'}) # ENT_COMPAT
escape(unsafe, {'"':'"', '\'':'''}) # ENT_QUOTES
escape(unsafe) # ENT_NOQUOTES
查看xml.sax.saxutils.quoteattr,它可能对您更有用
答案 3 :(得分:1)
html.entities
模块(python 2.x的htmlentitydefs
)包含一个字典codepoint2name
,它可以满足你的需要。
>>> import html.entities
>>> html.entities.codepoint2name[ord("&")]
'amp'
>>> html.entities.codepoint2name[ord('"')]
'quot'
答案 4 :(得分:1)
我认为最简单的方法就是使用replace:
text.replace("&", "&").replace('"', """).replace("<", "<").replace(">", ">")
PHP仅使用htmlspecialchars转义这四个实体。请注意,如果您在PHP中设置了ENT_QUOTES,则需要用&amp;#039;替换引号。而不是&amp; quot;。
答案 5 :(得分:0)
如果您使用的是django 1.0,则您的模板变量已经过编码并可以显示。如果您不希望全局启用它,也可以使用safe
运算符{{ var|safe }}
。
答案 6 :(得分:0)
在@ garlon4答案的基础上,您可以定义自己的htmlspecialchars(s)
:
def htmlspecialchars(text):
return (
text.replace("&", "&").
replace('"', """).
replace("<", "<").
replace(">", ">")
)
答案 7 :(得分:0)
你可以将这段代码添加到你的python文件中,然后你就可以在python中使用这个函数了
def htmlspecialchars(str):
str = str.replace("&", "&")
str = str.replace('"', """)
str = str.replace("'", "'")
str = str.replace("<", "<")
str = str.replace(">", ">")
return str