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

Ich bin immer new_tag aus einem Formular-Textfeld mit self.response.get("new_tag") und selected_tags von checkbox-Felder mit

self.response.get_all("selected_tags")

Kombiniere ich Sie so:

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

(f1.striplist ist eine Funktion, die Streifen Leerzeichen innerhalb der strings in der Liste.)

Aber in dem Fall, dass tag_list leer ist (keine neuen tags eingegeben werden), aber es gibt einige selected_tagsnew_tag_list enthält eine leere Zeichenfolge " ".

Beispielsweise aus logging.info:

new_tag
selected_tags[u'Hello', u'Cool', u'Glam']
new_tag_list[u'', u'Hello', u'Cool', u'Glam']

Wie kann ich loswerden der leeren Zeichenkette?

Wenn es eine leere Zeichenfolge in der Liste:

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

Aber, wenn es keine leere Zeichenfolge:

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

Aber das gibt:

Traceback (most recent call last):
  File "<pyshell#30>", line 1, in <module>
    if new_tag_list.index(""):
        ValueError: list.index(x): x not in list

Warum geschieht dies, und wie kann ich es umgehen?

InformationsquelleAutor der Frage Zeynel | 2011-02-06

Schreibe einen Kommentar