Ich habe Probleme mit dem Entfernen von Elementen aus einer Liste. Ich suche eine elegantere Lösung. Vorzugsweise eine Lösung in einer For-Schleife oder Filter.Python Objekte aus der Liste entfernen
Das Ziel des Stücks Code: Entfernen Sie alle leeren Einträge und alle Einträge, die mit einem '#' beginnen, aus dem Konfigurations-Handle.
Im Moment ich verwende:
# Read the config file and put every line in a seperate entry in a list
configHandle = [item.rstrip('\n') for item in open('config.conf')]
# Strip comment items from the configHandle
for item in configHandle:
if item.startswith('#'):
configHandle.remove(item)
# remove all empty items in handle
configHandle = filter(lambda a: a != '', configHandle)
print configHandle
Dies funktioniert, aber ich denke, es ist ein bisschen eine böse Lösung ist.
Wenn ich versuche:
# Read the config file and put every line in a seperate entry in a list
configHandle = [item.rstrip('\n') for item in open('config.conf')]
# Strip comment items and empty items from the configHandle
for item in configHandle:
if item.startswith('#'):
configHandle.remove(item)
elif len(item) == 0:
configHandle.remove(item)
Dies ist jedoch versagt. Ich kann nicht herausfinden warum.
Kann jemand mich in die richtige Richtung drücken?
Danke für Ihre Antwort! Ich verstehe die erste Lösung (mit einem Verständnis) nicht vollständig. Wie entfernt diese Zeile sonst die leeren Einträge in der Liste? Denn das macht auch den Trick für mich configHandle = [i für i in configHandle wenn len (i)> 0 und nicht i.startswith ('#')] – DCB
@DCB Wenn Sie 'if line' schreiben, prüft python die Gültigkeit von' line', wenn es als True python ausgewertet wird, führen Sie Ihre Bedingung aus, und in diesem Fall wird eine leere Zeichenfolge als False ausgewertet. Lesen Sie hier mehr https://docs.python.org/3.5/library/stdtypes.html#truth-value-testing – Kasramvd