如何将特殊字符转换为html实体?

时间:2012-03-08 11:27:21

标签: python html html-entities

我希望在python中转换像"%$!&@á é ©"这样的特殊字符,而不仅仅是'<&">',因为我到目前为止所找到的所有文档和参考资料都是如此。 cgi.escape无法解决问题。

例如,字符串"á ê ĩ &"应转换为"&aacute; &ecirc; &itilde; &amp;"

anyboy知道怎么解决吗? 我正在使用python 2.6。

2 个答案:

答案 0 :(得分:7)

您可以使用http://docs.python.org/library/htmllib.html#module-htmlentitydefs

中可以找到的词典构建自己的循环

您正在寻找的是htmlentitydefs.codepoint2name

答案 1 :(得分:5)

我找到了一个内置的解决方案来搜索@Ruben Vermeersch在他的回答中说的htmlentitydefs.codepoint2name。解决方案在此处找到:http://bytes.com/topic/python/answers/594350-convert-unicode-chars-html-entities

这是功能:

def htmlescape(text):
    text = (text).decode('utf-8')

    from htmlentitydefs import codepoint2name
    d = dict((unichr(code), u'&%s;' % name) for code,name in codepoint2name.iteritems() if code!=38) # exclude "&"    
    if u"&" in text:
        text = text.replace(u"&", u"&amp;")
    for key, value in d.iteritems():
        if key in text:
            text = text.replace(key, value)
    return text

谢谢大家的帮助! ;)