[Python-es] Convertir utf8 a html entities
Rock Neurotiko
miguelglafuente en gmail.com
Mar Jun 5 19:50:35 CEST 2012
Tienes razon, por eso digo "incluso lo tendras que recorrer", porque una de
dos, o te haces el pedazo de expresion regular con todos los casos, o las
vas haciendo mas pequeñas.
De todas formas, se supone que Python debería ser legible, y para mi las
expresiones regulares muy crípticas (la que has puesto todavia se entiende)
no son muy legibles, pero bueno, cada uno hace con su codigo lo que quiere
xD
El 5 de junio de 2012 19:40, Chema Cortes <pych3m4 en gmail.com> escribió:
> El día 5 de junio de 2012 15:59, Rock Neurotiko
> <miguelglafuente en gmail.com> escribió:
> > Yo creo que no hay que darle muchas vueltas al tema, puede que escrito
> quede
> > más "bonito", pero la expresion regular, dentro de lo que cabe, seguirá
> > recorriendo todo el string, incluso lo tendras que recorrer mas veces,
> una
> > por cada substitución.
> > Van a ser de la misma complejidad, O(n), o incluso la de expresiones
> > regulares seria O(k*n).
>
> No estoy de acuerdo. Muchas librerías, como la de las expresiones
> regulares, se programan y optimizan en C con lo que su uso puede
> resultar muy eficiente. Pero en el caso concreto de las expresiones
> regulares, se pueden combinar todos los caracteres a buscar en una
> sóla cadena de búsqueda con lo que sólo recorrer la cadena una sóla
> vez:
>
> import re
> from htmlentitydefs import codepoint2name
>
> u2n=dict((unichr(k),v) for (k,v) in codepoint2name.items())
>
> pat=re.compile('['+"".join(u2n.keys())+']')
>
> def repl(m):
> return '&'+u2n[m.group(0)]+';'
>
> print( pat.sub(repl, u"áÁ éÉ íÍ óÓ úÚ ñÑ çÇ €") )
>
>
> Este uso muestra muy poco del potencial que tienen las expresiones
> regulares. Para el caso que nos ocupa, posiblemente existan otras
> soluciones más rápidas y elegantes de hacer lo mismo, o incluso tan
> crípticas como ésta:
>
> print( "".join( ('&'+u2n[c]+';') if ord(c) in u2n else c for c in
> u""áÁ éÉ íÍ óÓ úÚ ñÑ çÇ €") )
>
> ...que viene a ser una solución "compacta" de las ya propuestas en
> mensajes anteriores.
>
>
> --
> Hyperreals *R: http://ch3m4.org/blog
> Quarks, bits y otras criaturas infinitesimales
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
--
Miguel García Lafuente - Rock Neurotiko
Vocal de la Junta Directiva Nacional del Partido Pirata.
Coordinador de Jóvenes Piratas en Madrid.
"Libertad en lugar de miedo." - "Información libre, sociedad libre."
El contenido de este e-mail es privado, no se permite la revelacion del
contenido de este e-mail a gente ajena a él.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20120605/1f54e810/attachment.html>
Más información sobre la lista de distribución Python-es