syntax-check with regular expressions?
Duncan Booth
me at privacy.net
Tue Jul 27 08:22:24 EDT 2004
spamnews at gmx.de (Detlef Jockheck) wrote in
news:b5a042c1.0407270400.13d9c94b at posting.google.com:
> Hi,
>
> I would like to check if a string contains a valid date format
> (Format: "dd.mm.yyyy") or not.
>
> What is the best way to do this. regexp? At the moment it would be
> sufficient to check for
> [digit][digit].[digit][digit].[digit][digit][digit][digit] but a full
> date verification (Month in range 1-12 ...) would be very nice too.
>
> Sample code would help me very much.
>
> regards
> Detlef
>
> PS: I'm a python newbie, so excuse this silly question
>
Don't use a regexp for this sort of task, its much better to do the
conversion and catch an error if the conversion fails. In this case you
should use time.strptime with an appropriate format. Sample code as
requested:
>>> import time
>>> time.strptime("27.7.2004","%d.%m.%Y")
(2004, 7, 27, 0, 0, 0, 1, 209, -1)
>>> time.strptime("27.13.2004","%d.%m.%Y")
Traceback (most recent call last):
File "<pyshell#8>", line 1, in -toplevel-
time.strptime("27.13.2004","%d.%m.%Y")
File "C:\Python23\lib\_strptime.py", line 424, in strptime
raise ValueError("time data did not match format: data=%s fmt=%s" %
ValueError: time data did not match format: data=27.13.2004 fmt=%d.%m.%Y
>>> time.strptime("29.2.1800", "%d.%m.%Y")
Traceback (most recent call last):
File "<pyshell#15>", line 1, in -toplevel-
time.strptime("29.2.1800", "%d.%m.%Y")
File "C:\Python23\lib\_strptime.py", line 513, in strptime
julian = datetime_date(year, month, day).toordinal() - \
ValueError: day is out of range for month
>>> time.strptime("29.2.2000", "%d.%m.%Y")
(2000, 2, 29, 0, 0, 0, 1, 60, -1)
>>>
More information about the Python-list
mailing list