[Python-es] Convertir utf8 a html entities

Chema Cortes pych3m4 en gmail.com
Jue Jun 7 03:42:55 CEST 2012


El 2012/6/6 Raimon Esteve <raimonesteve en gmail.com> escribió:
> Bueno ¿y el ganador es ......?
>
>>>> from htmlentitydefs import codepoint2name
>>>> str = u'Això és un cançò'
>>>> ''.join([ord(c) in codepoint2name and "&%s;" % codepoint2name[ord(c)] or c for c in str])
> u'Aix&ograve; &eacute;s un can&ccedil;&ograve;'
>
> Lo dejamos así, Almenos ha quedado compacto ;)

Pues aún se puede compactar más usando "generadores" (y más eficiente):

''.join(ord(c) in codepoint2name and "&%s;" % codepoint2name[ord(c)]
or c for c in str)

..aún más usando el operador ternario:

''.join("&%s;"%codepoint2name[ord(c)] if ord(c) in codepoint2name else
c for c in str)


A pesar de todo, prefiero que sea legible a costa de más líneas:

def fmt(c):
    r=codepoint2name.get(ord(c),c)
    return r if len(r)==1 else "&"+r+";"

print ''.join(fmt(c) for c in s)



-- 
Hyperreals *R: http://ch3m4.org/blog
Quarks, bits y otras criaturas infinitesimales


Más información sobre la lista de distribución Python-es