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 ?