lunes, 7 de noviembre de 2011

Manejo de cadenas de caracteres con Python.

Python es un lenguiaje muy potente debido a su modularidad y la capacidad de programar al vuelo con una cantidad grande de interpretes (ipython) mi preferido.
Ahora utilizaré algunas ventajas para manejar cadenas de texto.

El objeto Str de Python tiene un montón de métodos para procesamiento de texto. Aquí la lista:
l.__add__ l.decode
l.__class__ l.encode
l.__contains__ l.endswith
l.__delattr__ l.expandtabs
l.__doc__ l.find
l.__eq__ l.format
l.__format__ l.index
l.__ge__ l.isalnum
l.__getattribute__ l.isalpha
l.__getitem__ l.isdigit
l.__getnewargs__ l.islower
l.__getslice__ l.isspace
l.__gt__ l.istitle
l.__hash__ l.isupper
l.__init__ l.join
l.__le__ l.ljust
l.__len__ l.lower
l.__lt__ l.lstrip
l.__mod__ l.partition
l.__mul__ l.replace
l.__ne__ l.rfind
l.__new__ l.rindex
l.__reduce__ l.rjust
l.__reduce_ex__ l.rpartition
l.__repr__ l.rsplit
l.__rmod__ l.rstrip
l.__rmul__ l.split
l.__setattr__ l.splitlines
l.__sizeof__ l.startswith
l.__str__ l.strip
l.__subclasshook__ l.swapcase
l._formatter_field_name_split l.title
l._formatter_parser l.translate
l.capitalize l.upper
l.center l.zfill
l.count

El problema que quiero resolver en este momento es la edición de un nombre de este estilo:
NOMBRE="../../2011/20110809.1549.t1.modis_cal.png"
quiero quedarme con: 20110809.1549.t1.modis_cal.png
o mejor con: 20110809.1549.t.png

He aquí la solución:
Convertimos la cadena NOMBRE a una lista con el método split.

NOMBRE_LISTA=NOMBRE.split("/"); donde "/" es el caracter que servirá para partir la cadena en elementos de la lista (delimitador).

-Ahora NOMBRE_LISTA tiene esta forma:
['..', '..', '2011', '20110809.1549.t1.modis_cal.png']

-De momento sólo nos interesa el campo 3.
-Podemos volver hacer un split a este subcadena utilizando ahora como delimitador el símbolo "."
i.e. NOMBRE_LISTA=NOMBRE_LISTA[3].split(".")
Obs: Estamos sobre escribiendo la lista NOMBRE_LISTA por tanto ahora tendrá esta forma:
['20110809', '1549', 't1', 'modis_cal', 'png']

-Listo! ahora tenemos todo lo que necesitamos. Faltará concatenar (pegar) las cadenas que queramos para formar el nuevo nombre.

NOMBRE=NOMBRE_LISTA[0]+NOMBRE_LISTA[1]+NOMBRE_LISTA[2]+NOMBRE_LISTA[4]

Ya está!

No hay comentarios:

Publicar un comentario