[Python-es] Eliminar campos vacíos de una lista

1,254 views
Skip to first unread message

RadicalEd

unread,
Sep 20, 2012, 10:59:53 AM9/20/12
to La lista de python en castellano
Hola chicos, una pregunta sobre un problema con listas que no he podido solucionar, llevo ya 2 días dandole y dandole y no puedo, necesito eliminar de una lista los campos vacíos, ósea, tengo una lista +/- así

x = ['SAE80W90 1/4-C       ACEITE TRANS CAJA MECAN S 535  COEXITO-NAL      2       14,711     84      595,622     86      610,333', 'SAE80W90-GALON-C     ACEITE TRANS CAJA MECAN S 535  COEXITO-NAL      2       54,723     28      777,149     30      831,871', 'SAE85W140 1/4-C      ACEITE TRANS CAJA MECANIC 535  COEXITO-NAL                         60      436,039     60      436,039', 'SL-SAE20W50 1/4-C    ACEITE MOTOR SAE20W50 POR 535  COEXITO-NAL                   2', '', '', 'Fin reporte, Registros:28635', '', '', '', '', '', '', '', '', '', '', '', '', '']

Y debo dejarla así

x = ['SAE80W90 1/4-C       ACEITE TRANS CAJA MECAN S 535  COEXITO-NAL      2       14,711     84      595,622     86      610,333', 'SAE80W90-GALON-C     ACEITE TRANS CAJA MECAN S 535  COEXITO-NAL      2       54,723     28      777,149     30      831,871', 'SAE85W140 1/4-C      ACEITE TRANS CAJA MECANIC 535  COEXITO-NAL                         60      436,039     60      436,039', 'SL-SAE20W50 1/4-C    ACEITE MOTOR SAE20W50 POR 535  COEXITO-NAL                   2', 'Fin reporte, Registros:28635']

He tratado leyendo con una iteración pero me acabo de dar cuenta que esta va indice por indice y así elimine un dato, el ira por el siguiente, ósea, saltará hacía adelante teniendo un indice menos y ahí se me acaba la inteligencia.

Alguna idea?

Gracias.
--
El pasado son solo recuerdos, el futuro son solo sueños
http://www.solocodigo.com

Jose Caballero

unread,
Sep 20, 2012, 11:14:44 AM9/20/12
to La lista de python en castellano

algo asi (escribo de memoria, la sintaxis puede estar mal)?

x = [i for i in x if i ]


Jordi Torrents

unread,
Sep 20, 2012, 11:17:55 AM9/20/12
to La lista de python en castellano
Hola,

Una solución usando list comprehensions:

In [29]: lista = ['',4,2,7,'hola','','','','que','tal','','','','']

In [30]: [item for item in lista if item]
Out[30]: [4, 2, 7, 'hola', 'que', 'tal']

Salut!

2012/9/20, RadicalEd <willian....@gmail.com>:
_______________________________________________
Python-es mailing list
Pyth...@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Jose Caballero

unread,
Sep 20, 2012, 11:19:30 AM9/20/12
to La lista de python en castellano

x = [i for i in x if i ]



RadicalEd

unread,
Sep 20, 2012, 11:20:26 AM9/20/12
to La lista de python en castellano
Gracias, ya estaba buscando en Google

_______________________________________________
Python-es mailing list
Pyth...@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Daπid

unread,
Sep 20, 2012, 11:42:45 AM9/20/12
to La lista de python en castellano
2012/9/20 Jordi Torrents <jord...@gmail.com>:
> In [29]: lista = ['',4,2,7,'hola','','','','que','tal','','','','']
>
> In [30]: [item for item in lista if item]
> Out[30]: [4, 2, 7, 'hola', 'que', 'tal']

Una opción más clara:

[item for item in lista if len(item)>0]

Ahí queda bien claro qué criterio estás usando para decidir si está vacío o no.

Jose Caballero

unread,
Sep 20, 2012, 11:48:25 AM9/20/12
to La lista de python en castellano


2012/9/20 Daπid <david...@gmail.com>

2012/9/20 Jordi Torrents <jord...@gmail.com>:
> In [29]: lista = ['',4,2,7,'hola','','','','que','tal','','','','']
>
> In [30]: [item for item in lista if item]
> Out[30]: [4, 2, 7, 'hola', 'que', 'tal']

Una opción más clara:

[item for item in lista if len(item)>0]



eso solo valdria si los items son string.
La solucion [item for item in l if item] es valida para cualquier cosa. Busca items que no sean None (incluyendo string vacios)

RadicalEd

unread,
Sep 20, 2012, 11:49:45 AM9/20/12
to La lista de python en castellano
Gracias a todos, ya me quedó bastante claro cómo arreglar el problema, son unos tesos.

Jhonatan Sneider Salguero Villa

unread,
Sep 20, 2012, 11:53:54 AM9/20/12
to La lista de python en castellano

pero esto filtra el 0, mejor

[i for i in list if i != '']

Jose Caballero

unread,
Sep 20, 2012, 12:01:00 PM9/20/12
to La lista de python en castellano


2012/9/20 Jhonatan Sneider Salguero Villa <sney...@gmail.com>

pero esto filtra el 0, mejor

[i for i in list if i != '']


correcto

Carlos Latorre

unread,
Sep 21, 2012, 3:44:49 AM9/21/12
to pyth...@python.org
Una forma muy "funcional" de hacerlo sería:

lista = filter(None, lista)

Saludos,
Carlos

RadicalEd

unread,
Sep 21, 2012, 6:50:09 AM9/21/12
to La lista de python en castellano

Excelente, lo probaré

Reply all
Reply to author
Forward
0 new messages