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

lasizoillo lasizoillo en gmail.com
Jue Abr 5 18:03:32 CEST 2012


El día 5 de abril de 2012 17:20, Jose Caballero
<jcaballero.hep en gmail.com> escribió:
> Hola,
>
>
> necesito hacer split() de una cadena de caracteres, usando la coma ',' como
> caracter separador.
> Asi, "a,b,c" debe convertirse en ["a", "b", "c"]
>
> El problema viene cuando quiero que la coma sea tomada literalmente.
> En este caso "a,b,c" tendria que convertirse, por ejemplo, en ["a,b" , "c"]
>
> Una posible solucion es 'escapear' la coma que debe ser tomada literalmente.
> "a\,b,c" -> ["a,b", "c"]
>
> Bien.
> Pero y si en el caso anterior realmente la coma es caracter separador, y la
> barra es parte del primer substring?
> Es decir, que "a\,b,c" quiero que se convierta en ["a\", "b", "c"]
>
> Tendria que escapear tambien la barra? No se convierte esto en un problema
> ciclico?
>
> Lo puedo intentar resolver a mano.
> Pero si alguien tiene un link a un snippet donde este problema ya esta
> resuelto, me puedo ahorrar reinventar la rueda...
> O al menos los keywords para que busque yo mismo en google.
>

Una solución bien facil a tu problema es:

from json import dumps, loads
...

Otra posible solución es serializar la lista en binario y antes de
cada cadena poner un numero con el tamaño de la misma.

from struct import pack, unpack
... # aqui es un poco más complejo el ejemplo

Un saludo,

Javi


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