如何在Python中进行HTML转义?

Kis*_*B87 1 python string

我正在尝试实现一个替换以下值的函数:

# > with >
# < with &lt;
# " with &quot;
# & with &amp
Run Code Online (Sandbox Code Playgroud)

我的功能一直出错.究竟出了什么问题?

def escape_html(s):
    data = list(s)
    if ">" in data:
        data.replace(">","&gt;") 
    if "<" in data:
        data.replace("<","&lt;") 
    if '"' in data:
        data.replace('"',"&quot;") 
    if "&" in data:
        data.replace("&","&amp;") 
    word = data.join()
    return word

print escape_html("<>")
Run Code Online (Sandbox Code Playgroud)

注意:这更像是一个基本的编程问题.我的重点是我的功能不起作用的原因.我不能在这个项目中使用外部库.

fal*_*tru 6

用途cgi.escape:

>>> import cgi
>>> cgi.escape('<this & that>')
'&lt;this &amp; that&gt;'
Run Code Online (Sandbox Code Playgroud)

如果您使用Python 3.2+,请使用html.escape文档建议:

cgi.escape

因为版本不推荐使用3.2:此功能是不安全的,因为quotefalse在默认情况下,因此不推荐使用.请html.escape()改用.