[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ò és un cançò'
>
> 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