[Python-de] Erbitte Codekritik.

Harald Stowasser stowasser.h at idowa.de
Mit Nov 3 16:19:29 CET 2004


Hi,

ich bin nicht so recht zufrieden mit diesem Datumsparser.

1. re vs string. Ich importiere beide Module. Weil die expression so
schön praktisch ist. Könnte man aber auch über translate und/oder
replace machen.
Bei "translate" ist halt die Definition von "deletechars" ([^0-9])
recht aufwendig?

2. Sollte ich das Datum lieber durch das "date" Objekt schicken, und
dann mit year,month,date zurückgeben?
Hätte den Vorteil dass das Datum genauer validiert würde. Währe aber
IMHO n bisschen zu viel Overhead.

3. Gibt es was besseres zum validieren von *per Hand eingegebenen*
Datum-Daten?

---------------------------
#!/usr/bin/python
# -*- coding: iso-8859-1 -*-
import re
import string

def datum_test(datum):
  p = re.compile(r"[^0-9]")
  datum=p.split(datum)

  if len(datum)!=3:
    raise ValueError('Das Datum '
       +string.join(datum,'-')+
       ' hat nicht das richtige Format!')

  if len(datum[2])>2:
    t,m,j=datum[0],datum[1],datum[2]
  elif len(datum[0])>2:
    j,m,t=datum[0],datum[1],datum[2]
  else:
    t,m,j=datum[0],datum[1],'20'+string.zfill(datum[2],2)
  t=int(t)
  m=int(m)
  if t<1 or t>31:
    raise ValueError('Der Tag ' +str(t)+' im Datum stimmt nicht!')
  if m<1 or m>12:
    raise ValueError('Der Monat ' +str(m)+' im Datum stimmt nicht!')
  m=string.zfill(m,2)
  t=string.zfill(t,2)

  return t,m,j

try:
  print datum_test(r'1005 12.04')
except ValueError,e:
  print "FEHLER:"+str(e)


---------------------------------------

-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde geschreddert...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 250 bytes
Beschreibung: OpenPGP digital signature
URL         : http://starship.python.net/pipermail/python-de/attachments/20041103/bd78e1c2/signature.pgp