Hoe een item in een lijst te verwijderen als het bestaat?

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

Ik krijg new_tag uit een formuliertekstveld met self.response.get("new_tag") en selected_tags uit selectievakjes met

self.response.get_all("selected_tags") 

Ik combineer ze als volgt:

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

(f1.striplist is een functie die witruimten binnen de tekenreeksen in de lijst.)

Maar in het geval dat tag_list leeg is (er worden geen nieuwe tags ingevoerd), maar er zijn enkele selected_tags, new_tag_list bevat een lege string " ".

Bijvoorbeeld van logging.info:

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

Hoe kom ik van de lege string af?

Als er een lege string in de lijst staat:

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

Maar als er geen lege tekenreeks is:

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

Maar dit geeft:

Traceback (meest recente oproep laatst): Bestand "<pyshell#30>", regel 1, in <module> if new_tag_list.index(""): ValueError: list.index(x): x not in list 

Waarom gebeurt dit en hoe kan ik er omheen?