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:

- numeric forms (integers, reals, scientific notation)
- common programming identifiers
- network addresses (MAC, IPv4, IPv6)
- ISO8601 dates and datetime
- UUID

Parse actions:

- `convertToInteger`
- `convertToFloat`
- `convertToDate`
- `convertToDatetime`
- `stripHTMLTags`

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

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
| signedInteger = `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
| sciReal = `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`)

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}