martes, agosto 16, 2005

Python, xml y unicode


Sobre este tema hace unos dias puse un par de links. Ya he tenido tiempo de leerlos y son recomendables.

De el Python Unicode Tutorial esta interesante el ejemplo de recoder de latin-1 a utf-8:



import codecs
#Encoding / decoding functions

def encode(latin1_data):
return unicode(latin1_data,'latin-1').encode('utf-8'),len(latin1_data)

def decode(utf8_data):
return unicode(utf8_data,'utf-8').encode('latin-1'),len(utf8_data)

#StreamCodecs

class Codec(codecs.Codec):
def encode(self,latin1_data):
return encode(latin1_data)
def decode(self,utf8_data):
return decode(utf8_data)

class StreamWriter(Codec,codecs.StreamWriter):
pass

class StreamReader(Codec,codecs.StreamReader):
pass

#Codec registry entry point

def getregntry():
return(encode,decode,StreamReader,StreamWriter)



Y aquí podemos ver un ejemplo de uso.

Con respecto al default encoding de unicode, parece que en sys puede existir, o en algún momento ha existido la función setdefaultencoding. Pero al menos en mi distribución no viene.
De todas formas si queremos probar a cambiar el encoding por defecto, lo que podemos hacer es cambiar el valor de la variable encoding de site.py.
Un par de noticias de barrapunto:

viernes, agosto 12, 2005

Generating DOM Magic


Tenia pendiente echar un vistazo a este artículo de Uche Ogbuji.

El artículo en si está interesante, ya que muestra varias rutinas que trabajan sobre un árbol XML.
Las rutinas se centran en el uso de generators, y los comparan con el uso de recursión y xpath.
La técnica mas lenta es usando xpath. Es bueno saberlo.
Entre generators y el uso de recursión están ahí ahí, pero claro, con la prueba realizada. Con otros ejemplos posiblemente se incremente la diferencia a favor de los generators.

¡Ah! los generators por lo visto también son mas eficientes que los iterators.

Pero lo mas interesante del articulo, es que muestra enlaces a una serie de temas en python de los cuales no tenía constancia, y que pueden ser englobados dentro de Stackless Python. Dentro de stackless python tenemos por ejemplo: continuations, generators y microthreads (o coroutines).

Para finalizar unos links a unos artículos:
Ya comenté sobre Python Pitfalls en otro post. Dos articulos relacionados son:

Y para acabar un libro online sobre Python, Python Languaje Reference Manual.

Static Local Variables in Python


Pues eso variables estaticas locales en Python, con un ejemplo:

>>> def foo(v=[1]):
... print v[0],
... v[0] += 1
...
>>> foo()
1
>>> foo()
2
>>> foo()
3


Tengo que echar un vistazo a FreeMind, una aplicación para representar mapas mentales.
A ver si me animo esta tarde...
También tengo que echar un vistazo a la licencia Copyleft. Unos enlaces al respecto:

jueves, agosto 11, 2005

Guide to Python introspection.

Python y XML


Desde luego esta es la columna sobre Python y XML.
Los dos ultimos articulos que he estado ojeando:
El autor de la columna es Uche Ogbuji. Es el fundador de Fouthought empresa que desarrolla 4suite.
Dentro de 4Suite esta Domlettes, una implementacion DOM muy ligera. Dentro de Domlletes tenemos FtMinidom:

FtMiniDom - available only in 4Suite 0.12.0a1 through 1.0a4, FtMiniDom is identical to cDomlette, but is implemented completely in Python. In most cases, it uses your platform's PyExpat to do the XML parsing. FtMiniDom is very much like the xml.dom.minidom that comes with Python and the xml.dom.minidom replacement that comes with PyXML, but it does have some differences and added features. You can force the use of FtMiniDom by setting USE_MINIDOM=1 in your environment before importing Ft.Xml.Domlette.


Para acabar un par de enlaces mas:



miércoles, agosto 10, 2005

De HTML a XML con python


Ya hace tiempo, estuve mirando algun enlace al respecto, ya que intuía que me iba a tocar trastear con estos temas.
De nuevo me he encontrado con el siguiente articulo 'Wrestling HTML'. Es bueno, te cuenta lo que tienes que hacer para pasar de html a xml usando varias posibles herramientas. Menciona en el articulo tanto uTidyLib, como libxml2 HTMLParser.

El mismo autor tiene otro articulo sobre eluso de libxml.

Y para acabar este post unos links mas:

Pyrex


¡¡¡Redios!!! La de cosas que hay por ahí, relacionadas con Python. Me acabo de encontrar con Pyrex, según comentan en la introducción, se trata de un lenguaje para extender python, de manera que podamos mezclar codigo python con tipos de C.

Se ve que lxml lo usa.

DOM Parser


Voy a ver si hoy pruebo un parser DOM. El candidato va a ser libxml2, el cual es un parser para C, pero que tiene bindings para python.
Por lo que he podido leer, no es muy recomendable su uso, de ahí que vaya a usar lxml.

Ya para acabar, lxml usa como API el modulo ElementTree. Parece muy util, para ser usado, incluso sin usar un parser DOM.

lunes, agosto 08, 2005

Tidy



Tidy es una herramienta muy util para evitar errores de parseo usando parsers html, ya que 'corrige' el html.
Para usarlo dese python, he encontrado dos librerias:

El segundo (el unico que he probado) requiere:

  • tener instalado tidylib.
  • y tener instalado ctypes.

viernes, agosto 05, 2005

Parsers html en python


Este tema me dará para hablar para largo, pero para empezar solo comentar que hay dos parsers estandard, es decir que vienen con la distribución:

En el proyecto en el que estoy actualmente han usado el primero, pero tampoco fueron conscientes en su momento de la existencia del segundo.

Python standard logging


Por lo visto el sistema de logs que viene con python esta basado en el de log4j.
Varios enlaces al respecto:

Nota: El termino PEP viene de Python Enhacement Proposal. Y hay unos cuantos.
He encontrado un link muy interesante, sobre python pitfalls.
De todas formas, buscando en google por 'python pitfalls', salen unos cuantos links.

valgrind



Hoy me ha comentado Carlos sobre valgrind. La idea sería usarlo para detertar memory leaks. La lista de proyectos que lo usan es espectacular. Debe de estar realmente bien.

jueves, agosto 04, 2005

WikiBooks


Al hacer una busqueda me salio este wikibook sobre computer programming. A partir de ese enlace saqué las paginas principales en inglés y español de los wikibooks.

Fedora



Me comenta JJ que Fedora Core 4 esta que te cagas.

Daemon Tools



No conocia estas herramientas. Muy interesesantes. Te permiten teniendo una imagen ISO de un CD en el disco duro, montarlo como unidad.
Un par de noticias de barrapunto:

martes, agosto 02, 2005

Un buen punto de partida para documentacion sobre Python y XML.