Come eliminare un elemento in un elenco se esiste?

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

Ricevo new_tag da un campo di testo del modulo con self.response.get("new_tag") e selected_tags dai campi della casella di controllo con

self.response.get_all("selected_tags") 

Li combino in questo modo:

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

(f1.striplist è una funzione che elimina gli spazi bianchi all'interno delle stringhe in l'elenco.)

Ma nel caso in cui tag_list sia vuoto (non vengono inseriti nuovi tag) ma ci siano alcuni selected_tags, new_tag_list contiene una stringa vuota " ".

Ad esempio, da logging.info:

 new_tagselect_tags[u"Hello", u"Cool", u"Glam"] new_tag_list[u"", u"Hello", u"Cool", u"Glam"] 

Come faccio a eliminare la stringa vuota?

Se è presente una stringa vuota nell'elenco:

>>> s = [u"", u"Ciao", u"Cool", u"Glam"] >>> i = s.index("") >>> del s[i] >>> s [u"Hello", u"Cool", u"Glam"] 

Ma se non c'è una stringa vuota:

>> > s = [u"Ciao", u"Cool", u"Glam"] >>> if s.index(""): i = s.index("") del s[i] else: print "new_tag_list non ha una stringa vuota" 

Ma questo dà:

Traceback (ultima chiamata più recente): File "<pyshell#30>", riga 1, in <module> if new_tag_list.index(""): ValueError: list.index(x): x not in list 

Perché succede e come posso aggirarlo?