[Python-es] problema con split() cuando el caracter separador debe ser tomado literalmente

Jose Caballero jcaballero.hep en gmail.com
Vie Abr 6 13:45:02 CEST 2012


> 
> 
> 
> asumí que si que podías controlar la creación de la cadena original y
> por lo tanto usar un mecanismo de serialización robusto, probado y
> fácil de usar. Pero si ese no es el caso yo me lo plantearía de forma
> diferente según dos supuestos:
> 
> Supuesto 1: Estas intercambiando datos con un proveedor bastante
> cutre. Cambia de trabajo 

Vale. Pero solo si luego me contratas tu.
;)


> 
> Supuesto 2: Estas haciendo un scraper y el proveedor de datos ni
> siquiera sabe que lo es. Posiblemente las regex (modulo re) sean la
> mejor opción para casi todos tus problemas. De fallarte eso puedes
> mirar alguna herramienta para hacer parsers, pero eso ya sería para
> gramáticas complejas y recursivas.
> 
> re.match("(\w+,\w+),(\w+)", cadena).groups()
> 
> Posiblemente con el ejemplo anterior tengas solucionado tu problema.
> 

Gracias a todos por vuestro tiempo e ideas.
El problema no es facil, la verdad.
Yo no controlo la creacion de la cadena original. Viene de un fichero de configuracion que yo analizo con ConfigParser. Soluciones tipo usar listas [], serializar, split() con indice,... no valen. Yo no puedo saber a priori lo que los usuarios van a poner en los ficheros de conf.

Cambiar de separador es una posibilidad, pero tiene el inconveniente de que entonces tengo que pedirle a todos los usuarios que cambien sus config files. Ya pase por esa experiencia y no fue agradable. Aprendi a molestar a los usuarios lo menos posible.

La solucion menos intrusiva era que cuando un usuario necesite que la coma sea literal la marcase de alguna forma. Pero entonces me vi atrapado en un problema recursivo.

En fin, lo dicho. Muchas gracias a todos por vuestras sugerencias.

Saludos,
Jose
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20120406/c0388ea2/attachment.html>


Más información sobre la lista de distribución Python-es