Wie lösche ich ein Element in einer Liste, wenn es existiert?

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

Ich erhalte new_tag aus einem Formulartextfeld mit self.response.get("new_tag") und s selected_tags aus Kontrollkästchenfeldern mit

self.response.get_all("ausgewählte_tags") 

Ich kombiniere sie so:

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

(f1.striplist ist eine Funktion, die Leerzeichen innerhalb der Zeichenfolgen entfernt der Liste.)

Aber für den Fall, dass tag_list leer ist (es werden keine neuen Tags eingegeben), aber es gibt einige ausgewählte_tags, new_tag_list enthält eine leere Zeichenfolge " ".

Zum Beispiel von logging.info:

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

Wie werde ich den leeren String los?

Wenn es einen leeren String in der Liste gibt:

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

Aber wenn es keinen leeren String gibt:

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

Aber das ergibt:

Traceback (letzter Aufruf zuletzt): Datei "<pyshell#30>", Zeile 1, in <module> if new_tag_list.index(""): ValueError: list.index(x): x not in list 

Warum passiert das und wie kann ich es umgehen?