ÿØÿà JFIF ` ` ÿþxØ
| Server IP : 109.234.164.53 / Your IP : 216.73.216.136 Web Server : Apache System : Linux cervelle.o2switch.net 4.18.0-553.32.1.lve.el8.x86_64 #1 SMP Thu Dec 19 13:14:03 UTC 2024 x86_64 User : computer3 ( 1098) PHP Version : 7.1.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /opt/alt/python35/share/doc/alt-python35-pyparsing-doc/examples/ |
Upload File : |
# parseActions.py
#
# A sample program a parser to match a date string of the form "YYYY/MM/DD",
# and return it as a datetime, or raise an exception if not a valid date.
#
# Copyright 2012, Paul T. McGuire
#
from datetime import datetime
from pyparsing import *
# define an integer string, and a parse action to convert it
# to an integer at parse time
integer = Word(nums).setName("integer")
def convertToInt(tokens):
# no need to test for validity - we can't get here
# unless tokens[0] contains all numeric digits
return int(tokens[0])
integer.setParseAction(convertToInt)
# or can be written as one line as
#integer = Word(nums).setParseAction(lambda t: int(t[0]))
# define a pattern for a year/month/day date
date_expr = integer('year') + '/' + integer('month') + '/' + integer('day')
date_expr.ignore(pythonStyleComment)
def convertToDatetime(s,loc,tokens):
try:
# note that the year, month, and day fields were already
# converted to ints from strings by the parse action defined
# on the integer expression above
return datetime(tokens.year, tokens.month, tokens.day).date()
except Exception as ve:
errmsg = "'%s/%s/%s' is not a valid date, %s" % \
(tokens.year, tokens.month, tokens.day, ve)
raise ParseException(s, loc, errmsg)
date_expr.setParseAction(convertToDatetime)
date_expr.runTests("""\
2000/1/1
# invalid month
2000/13/1
# 1900 was not a leap year
1900/2/29
# but 2000 was
2000/2/29
""")
# if dates conform to ISO8601, use definitions in pyparsing_common
date_expr = pyparsing_common.iso8601_date.setParseAction(pyparsing_common.convertToDate())
date_expr.ignore(pythonStyleComment)
date_expr.runTests("""\
2000-01-01
# invalid month
2000-13-01
# 1900 was not a leap year
1900-02-29
# but 2000 was
2000-02-29
""")