2012-03-08 18 views
5

Quiero convertir, en python, caracteres especiales como "%$!&@á é ©" y no solo '<&">' ya que toda la documentación y las referencias que he encontrado hasta ahora muestran. cgi.escape no resuelve el problema.¿Cómo convertir caracteres especiales en entidades html?

Por ejemplo, la cadena "á ê ĩ &" debe convertirse a "&aacute; &ecirc; &itilde; &amp;".

¿Anyboy sabe cómo solucionarlo? Estoy usando python 2.6.

+2

Tenga en cuenta dos cosas: (1) los nombres de las entidades pueden causar problemas, en su lugar debería usar entidades numéricas. (2) ¿Por qué usar entidades en absoluto? En la mayoría de los casos, una mejor solución es codificar UTF-8 el documento para que pueda contener las letras y no usar entidades. –

+1

http://wiki.python.org/moin/EscapingHtml – Quentin

+0

Estoy de acuerdo contigo @KonradRudolph. No me gusta usar entidades, pero el sistema en el que estoy trabajando se usa, así que no tengo otra opción. =/ –

Respuesta

5

me encontré con un sistema incorporado en la búsqueda de una solución al htmlentitydefs.codepoint2name que @Ruben Vermeersch dijo en su respuesta. Se encontró que la solución a este problema: http://bytes.com/topic/python/answers/594350-convert-unicode-chars-html-entities

Aquí está la función:

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 

Gracias a todos por ayudar! ;)

Cuestiones relacionadas