tratamiento de listas

Joaquin Jose del Cerro Murciano jjdelcerro en cenoclap.es
Vie Abr 23 07:38:19 CEST 2004


El Jueves, 22 de Abril de 2004 11:55, David Sanchez Perez escribió:
> Buenas listeros.
> Mi pregunta es la siguiente. Supongamos que tengo la lista que aparece a
> continuacion:
>
> ['(\\HasNoChildren) "." "INBOX.Trash"','(\\HasNoChildren) "."
> "INBOX.Sent"', '(\\HasNoChildren) "."
> "INBOX.prueba_dvd.anidada2"','(\\HasChildren) "."
> "INBOX.prueba_dvd"','(\\Unmarked \\HasChildren) "." "INBOX"']
>
> Pues bien, yo de esa lista, quiero un array que contenga cada uno de los
> buzones, es decir INBOX.Trash, INBOX.Sent, ...., INBOX*.
> La idea seria hacer como un split con '"' como separador, y no tener en
> cuenta la cadena "."
> La cosa es que no se como hacerlo.
> Otra manera que se me ha ocurrido es hacer un cast a esa lista para pasarlo
> a tipo cadena (no se todavia como se haria tampoco), y una vez que fuese
> una cadena, hacer:
>  [s for s in cad.split('"') if s.startswith('IN.')]
> suponiendo que en 'cad' tenga la cadena
>
>
> Un saludo y gracias
>            DvD
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es

Hola, 
asi sin complicarme mucho la vida lo primero que se me ocurre podria ser algo 
como:

import re

lista=[
  '(\\HasNoChildren) "." "INBOX.Trash"',
  '(\\HasNoChildren) "." "INBOX.Sent"',
  '(\\HasNoChildren) "." "INBOX.prueba_dvd.anidada2"',
  '(\\HasChildren) "." "INBOX.prueba_dvd"',
  '(\\Unmarked \\HasChildren) "." "INBOX"'
]

lista2 = list()
for s in lista:
  lista2.append( re.sub("^.*INBOX","INBOX",s)[:-1] )
print lista2

Si te vale, ahi lo tienes.

Un saludo
Joaquin.




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