komisches Problem mit regulären Ausdrücken

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
_Joe_
User
Beiträge: 2
Registriert: Mittwoch 3. Juni 2009, 14:32

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
Zuletzt geändert von _Joe_ am Mittwoch 3. Juni 2009, 15:16, insgesamt 1-mal geändert.
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

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.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Benutzeravatar
lutz.horn
User
Beiträge: 205
Registriert: Dienstag 8. November 2005, 12:57
Wohnort: Pforzheim

Ich verstehe Dein Subject nicht. Wo sind denn in Deinem Problem die Regulären Ausdrücke?
_Joe_
User
Beiträge: 2
Registriert: Mittwoch 3. Juni 2009, 14:32

danke, mit glob haut es hin
Bernhard
User
Beiträge: 136
Registriert: Sonntag 15. Januar 2006, 20:31
Wohnort: Greifswald
Kontaktdaten:

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
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

So schauts aus :)
Antworten