Seite 1 von 1

komisches Problem mit regulären Ausdrücken

Verfasst: Mittwoch 3. Juni 2009, 14:38
von _Joe_
Hallo,

ich spiele gerade ein wenig mit Python 3 herum. Nur habe ich ein sehr merkwürdiges Problem. schaut selbst:

Code: Alles auswählen

def tar():
	daten = os.listdir("/home/andy/")
	for i in daten:
		if r"." not in i:
			daten.remove(i)
	print(daten)
Ausgabe:
['.rsync-key.pub', '.eclipse', '.bash_profile', '.recently-used.xbel', 'backup.py', '.tmp', '.gegl-0.0', '.gksu.lock', '.nautilus', '.openoffice.org', '.asoundrc', '.rsync-key', '.thunderbird', '.java', '.dbus', 'Ablage', '.mozilla', '.config', '.recently-used', '.dia', '.dmrc', '.cache', '.adobe', '.xsession-errors', '.gitconfig', '.gtk-bookmarks', '.Xauthority', '.jdownloader', '.gconf', '.sqlite_history', '.dvdriprc', '.aspell.de.pws', '.Games', '.mplayer', '.dvdrip', '.bash_history', '.thumbnails', '.htoprc', '.themes', '.macromedia', '.viminfo', '.sig.txt', '.dvdcss', '.wapi', '.fontconfig', '.gnome2_private', '.avidemux', '.gnome2', '.codeblocks', '.dvdrip-master', '.streamtuner', '.asoundrc.asoundconf', '.gimp-2.6', '.icedteaplugin', '.nvidia.sh', '.nvidia-settings-rc', '.tipp10', '.icons', '.VirtualBox', '.aspell.de.prepl', '.local', '.esd_auth', '.Blog', '.gconfd', '.backup.sh.swp', '.mc', '.filezilla', '.gstreamer-0.10', '.purple', '.devilspie', '.bashrc', '.metacity', '.nero', '.ICEauthority', '.isomaster', '.gvfs']
Wie man sieht ist Ablage noch enthalten wobei es keinen "." enthält. Mache ich was falsch?


Ändere ich den Code ab und lasse mir alle i ausgeben die nicht enthalten sind klappt es, nur warum dann nicht beim löschen?

Code: Alles auswählen

def tar():
	daten = os.listdir("/home/andy/")
	for i in daten:
		if r"." not in i:
			print(i)
Ausgabe:
Musik
Bilder
Dokumente
Ablage
Desktop
Stuff
Proggen
Download

Verfasst: Mittwoch 3. Juni 2009, 14:43
von Rebecca
Erstens sehe ich nirgendwo einen regulaeren Audruck (und nein, das r vor dem String steht fuer "Raw" und ist in deinem Fall ueberfluessig). Zweitens magst du dir vlt. mal glob.glob anschauen. Drittens: Loeschen aus einer Liste, waehrend man ueber sie iteriert, muss in die Hose gehen, lieber dabei eine neue Liste anlegen oder List Comprehensions verwenden.

Verfasst: Mittwoch 3. Juni 2009, 14:44
von lutz.horn
Ich verstehe Dein Subject nicht. Wo sind denn in Deinem Problem die Regulären Ausdrücke?

Verfasst: Mittwoch 3. Juni 2009, 15:16
von _Joe_
danke, mit glob haut es hin

Verfasst: Donnerstag 4. Juni 2009, 11:08
von Bernhard
Noch mal für die doofen, also für Leute wie mich: Außer der falschen Überschrift war der eigentliche Fehler von _Joe_, dass er die Liste verändern wollte, über die er gerade iteriert hat. Richtig?

Danke,
Bernhard

Verfasst: Donnerstag 4. Juni 2009, 11:30
von cofi
So schauts aus :)