El 2012/6/6 Raimon Esteve <raimonest...@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 _______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/