quarta-feira, 24 de setembro de 2008

HTML Unescape em Python

Toda linguagem tem seus pontos altos e baixos, e suas próprias idiossincracias. Ontem eu esbarrei em algo interessante com relação a biblioteca padrão do Python.

Eu precisava de uma função que fosse mais ou menos equivalente ao html_entity_decode do PHP.

Eu estava usando a biblioteca webhelpers, que tem uma função escape, mas cadê a unescape? Olhando o código, descubro que a webhelpers usa uma função definida em webhelpers.utils, chamada cgi_escape, que seria uma implementação melhor de cgi.escape.

Minhas esperanças então se concentratam no módulo cgi. Mas uma olhada mais atenta me frustrou de novo: temos escape, mas não unescape. Até que um comentário num post do codare que, vejam só a ironia, mostrava como implementar um escape, me trouxe a solução: xml.sax.saxutils.unescape (e sua par, xml.sax.saxutils.escape).

Sei que teria sido muito fácil implementar uma função assim eu mesmo – até mesmo trivial. O ponto é que algo que eu considerava intuitivo e esperava encontrar naquele lugar, se mostrou muito mais difícil de achar do que minha intuição supôs. E eu não gosto de ter minha intuição enganada.