¿Cómo eliminar un elemento de una lista si existe?

| | | | | | | | | | | | | | | | | |

Obtengo new_tag de un campo de texto de formulario con self.response.get("new_tag") y selected_tags de campos de casilla de verificación con

self.response.get_all("selected_tags") 

Los combino así:

tag_string = new_tag new_tag_list = f1.striplist(tag_string.split(";") + selected_tags) 

(f1.striplist es una función que elimina los espacios en blanco dentro de las cadenas en la lista.)

Pero en el caso de que tag_list esté vacío (no se ingresan nuevas etiquetas) pero hay algunas selected_tags, new_tag_list contiene una cadena vacía " ".

Por ejemplo, de logging.info:

 nueva_etiqueta etiquetas_seleccionadas[u"Hola", u"Genial", u"Glam"] nueva_etiqueta_lista[u"", u"Hola", u"Genial", u"Glam"] 

¿Cómo me deshago de la cadena vacía?

Si hay una cadena vacía en la lista:

>>> s = [u"", u"Hola", u"Genial", u"Glam"] >>> i = s.index("") >>> del s[i] >>> s [u"Hola", u"Genial", u"Glam"] 

Pero si no hay una cadena vacía:

>> > s = [u"Hola", u"Genial", u"Glam"] >>> if s.index(""): i = s.index("") del s[i] else: print "new_tag_list no tiene una cadena vacía" 

Pero esto da:

Rastreo (última llamada más reciente): archivo "<pyshell#30>", línea 1, en <módulo> if new_tag_list.index(""): ValueError: list.index(x): x no está en la lista 

¿Por qué sucede esto y cómo puedo solucionarlo?