Albert Hermeling wrote:
Heike C. Zimmerer schrieb:
Albert Hermeling writes:
Heike C. Zimmerer schrieb:
Regexs wurden ja schon mehrere vorgeschlagen. Du könntest auch einen anderen Weg einschlagen, der in Python besonders elegant geht: warum schaust Du nicht nach, ob sich mit dem Objekt das Gewünschte machen lässt und fängst die Exception ab?
Auch ein Weg, nur der Gedanken eine Ausname zu erzeugen um ein String zu ueberpruefen gefaehlt mir nicht so recht.
Wieso? Das ist der "Pythonic way". EAFP statt LBYL:
stimmt schon Dein Weg ist der "Pythonic way" ist er deshalb immer der bessere? Ich meine im meinem Fall nicht. Ich glaube das dein Code mehr Zeit braucht als Karl sein Vorschlag. Da ich mit grossen Dateien rechne ist die Schnelligkeit wichtig.
Die Exception braucht nur dann Zeit, wenn sie tatsaechlich ausgeloest wird. Erwartest du, dass die Mehrzahl deiner Eintraege Formatfehler aufweist? Gerade fuer deinen Fall, wenn im Normalfall alles gut geht, ist eine Test mit Exceptions die optimale Loesung, auch unter Performance-Kriterien. Wenn du sicher gehen willst, dann implementierst du am besten mehrere Varianten, und probierst aus, welche eine typische Datei am schnellsten verarbeiten. Alles andere ist erst mal Spekulation, auch wenn die Erfahrung zeigt, dass bei selten auftretenden Fehlern eine Fehlerbehandlung mit Exceptions normalerweise am effizientesten ist. Uebrigens, wenn du mit REs arbeitest, vergiss nicht deine Muster vorher (ausserhalb des loops) zu kompilieren! Hier demonstriert mit einem, das zumindest grob die zulaessigen Bereiche abcheckt: pats = ( '(0?[1-9]|[12][0-9]|3[[01])' # tag (0 - 31) '\.' '(0?[1-9]|1[012])' #monat (0 - 12) '\.' '(19[0-9]{2}|[2-9][0-9]{3})' # jahr (alles ab 1900) ) pat = re.compile(pats) def teste_datumsformat(s, pat=pat): if not pat.match(teststring): raise ValueError, 'Ungueltiges Datumsformat: "%s"' % s -schorsch -- Georg Mischler -- simulations developer -- schorsch at schorsch com +schorsch.com+ -- lighting design tools -- http://www.schorsch.com/ _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de