Comment supprimer un élément d’une liste s’il existe ?

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

Je reçois new_tag à partir d'un champ de texte de formulaire avec self.response.get("new_tag") et selected_tags à partir de champs de case à cocher avec

self.response.get_all("selected_tags") 

Je les combine comme ceci :

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

(f1.striplist est une fonction qui supprime les espaces blancs à l'intérieur des chaînes dans la liste.)

Mais dans le cas où tag_list est vide (aucune nouvelle balise n'est saisie) mais qu'il y a des selected_tags, new_tag_list contient une chaîne vide " ".

Par exemple, depuis logging.info :

 new_tag selected_tags[u"Bonjour", u"Cool", u"Glam"] new_tag_list[u"", u"Bonjour", u"Cool", u"Glam"] 

Comment supprimer la chaîne vide ?

S'il y a une chaîne vide dans la liste :

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

Mais s'il n'y a pas de chaîne vide :

>> > s = [u"Bonjour", u"Cool", u"Glam"] >>> if s.index("") : i = s.index("") del s[i] else : print "new_tag_list has no empty string" 

Mais cela donne :

Traceback (appel le plus récent en dernier) : Fichier "<pyshell#30>", ligne 1, dans <module> if new_tag_list.index("") : ValueError : list.index(x) : x not in list 

Pourquoi cela se produit-il et comment puis-je le contourner ?