Module pyparsing :: Class pyparsing_common
[frames] | no frames]

Class pyparsing_common

source code

Here are some common low-level expressions that may be useful in jump-starting parser development:

Parse actions:

Example:

   pyparsing_common.number.runTests('''
       # any int or real number, returned as the appropriate type
       100
       -100
       +100
       3.14159
       6.02e23
       1e-12
       ''')

   pyparsing_common.fnumber.runTests('''
       # any int or real number, returned as float
       100
       -100
       +100
       3.14159
       6.02e23
       1e-12
       ''')

   pyparsing_common.hex_integer.runTests('''
       # hex numbers
       100
       FF
       ''')

   pyparsing_common.fraction.runTests('''
       # fractions
       1/2
       -3/4
       ''')

   pyparsing_common.mixed_integer.runTests('''
       # mixed fractions
       1
       1/2
       -3/4
       1-3/4
       ''')

   import uuid
   pyparsing_common.uuid.setParseAction(tokenMap(uuid.UUID))
   pyparsing_common.uuid.runTests('''
       # uuid
       12345678-1234-5678-1234-567812345678
       ''')

prints:

   # any int or real number, returned as the appropriate type
   100
   [100]

   -100
   [-100]

   +100
   [100]

   3.14159
   [3.14159]

   6.02e23
   [6.02e+23]

   1e-12
   [1e-12]

   # any int or real number, returned as float
   100
   [100.0]

   -100
   [-100.0]

   +100
   [100.0]

   3.14159
   [3.14159]

   6.02e23
   [6.02e+23]

   1e-12
   [1e-12]

   # hex numbers
   100
   [256]

   FF
   [255]

   # fractions
   1/2
   [0.5]

   -3/4
   [-0.75]

   # mixed fractions
   1
   [1]

   1/2
   [0.5]

   -3/4
   [-0.75]

   1-3/4
   [1.75]

   # uuid
   12345678-1234-5678-1234-567812345678
   [UUID('12345678-1234-5678-1234-567812345678')]
Instance Methods
 
convertToInteger(s, l, t)
Parse action for converting parsed integers to Python int
source code
 
convertToFloat(s, l, t)
Parse action for converting parsed numbers to Python float
source code
Static Methods
 
convertToDate(fmt='%Y-%m-%d')
Helper to create a parse action for converting parsed date string to Python datetime.date
source code
 
convertToDatetime(fmt='%Y-%m-%dT%H:%M:%S.%f')
Helper to create a parse action for converting parsed datetime string to Python datetime.datetime
source code
 
stripHTMLTags(s, l, tokens)
Parse action to remove HTML tags from web page HTML source
source code
 
upcaseTokens(s, l, t)
Parse action to convert tokens to upper case.
source code
 
downcaseTokens(s, l, t)
Parse action to convert tokens to lower case.
source code
Class Variables
  integer = integer
expression that parses an unsigned integer, returns an int
  hex_integer = hex integer
expression that parses a hexadecimal integer, returns an int
  signed_integer = signed integer
expression that parses an integer with optional leading sign, returns an int
  fraction = fraction
fractional expression of an integer divided by an integer, returns a float
  mixed_integer = fraction or mixed integer-fraction
mixed integer of the form 'integer - fraction', with optional leading integer, returns float
  real = real number
expression that parses a floating point number and returns a float
  sci_real = real number with scientific notation
expression that parses a floating point number with optional scientific notation and returns a float
  number = {real number with scientific notation | real number |...
any numeric expression, returns the corresponding Python type
  fnumber = fnumber
any int or real number, returned as float
  identifier = identifier
typical code identifier (leading alpha or '_', followed by 0 or more alphas, nums, or '_')
  ipv4_address = IPv4 address
IPv4 address (0.0.0.0 - 255.255.255.255)
  ipv6_address = IPv6 address
IPv6 address (long, short, or mixed form)
  mac_address = MAC address
MAC address xx:xx:xx:xx:xx (may also have '-' or '.' delimiters)
  iso8601_date = ISO8601 date
ISO8601 date (yyyy-mm-dd)
  iso8601_datetime = ISO8601 datetime
ISO8601 datetime (yyyy-mm-ddThh:mm:ss.s(Z|+-00:00)) - trailing seconds, milliseconds, and timezone optional; accepts separating 'T' or ' '
  uuid = UUID
UUID (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
  comma_separated_list = comma separated list
Predefined expression of 1 or more printable words or quoted strings, separated by commas.
Method Details

convertToDate(fmt='%Y-%m-%d')
Static Method

source code 

Helper to create a parse action for converting parsed date string to Python datetime.date

Params -

  • fmt - format to be passed to datetime.strptime (default="%Y-%m-%d")

Example:

   date_expr = pyparsing_common.iso8601_date.copy()
   date_expr.setParseAction(pyparsing_common.convertToDate())
   print(date_expr.parseString("1999-12-31"))

prints:

   [datetime.date(1999, 12, 31)]

convertToDatetime(fmt='%Y-%m-%dT%H:%M:%S.%f')
Static Method

source code 

Helper to create a parse action for converting parsed datetime string to Python datetime.datetime

Params -

  • fmt - format to be passed to datetime.strptime (default="%Y-%m-%dT%H:%M:%S.%f")

Example:

   dt_expr = pyparsing_common.iso8601_datetime.copy()
   dt_expr.setParseAction(pyparsing_common.convertToDatetime())
   print(dt_expr.parseString("1999-12-31T23:59:59.999"))

prints:

   [datetime.datetime(1999, 12, 31, 23, 59, 59, 999000)]

stripHTMLTags(s, l, tokens)
Static Method

source code 

Parse action to remove HTML tags from web page HTML source

Example:

   # strip HTML links from normal text 
   text = '<td>More info at the <a href="http://pyparsing.wikispaces.com">pyparsing</a> wiki page</td>'
   td,td_end = makeHTMLTags("TD")
   table_text = td + SkipTo(td_end).setParseAction(pyparsing_common.stripHTMLTags)("body") + td_end
   
   print(table_text.parseString(text).body) # -> 'More info at the pyparsing wiki page'

Class Variable Details

number

any numeric expression, returns the corresponding Python type

Value:
{real number with scientific notation | real number | signed integer}