pyparsing.Dict

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

# Class Dict

source code

         object --+
                  |
      ParserElement --+
                      |
    ParseElementEnhance --+
                          |
             TokenConverter --+
                              |
                             Dict

Converter to return a repetitive expression as a list, but also as a dictionary. Each element can also be referenced using the first token in the expression as its key. Useful for tabular report scraping when the first column can be used as a item key.

Example:

       data_word = Word(alphas)
       label = data_word + FollowedBy(':')
       attr_expr = Group(label + Suppress(':') + OneOrMore(data_word).setParseAction(' '.join))

       text = "shape: SQUARE posn: upper left color: light blue texture: burlap"
       attr_expr = (label + Suppress(':') + OneOrMore(data_word, stopOn=label).setParseAction(' '.join))

       # print attributes as plain groups
       print(OneOrMore(attr_expr).parseString(text).dump())

       # instead of OneOrMore(expr), parse using Dict(OneOrMore(Group(expr))) - Dict will auto-assign names
       result = Dict(OneOrMore(Group(attr_expr))).parseString(text)
       print(result.dump())

       # access named fields as dict entries, or output as dict
       print(result['shape'])
       print(result.asDict())

prints:

       ['shape', 'SQUARE', 'posn', 'upper left', 'color', 'light blue', 'texture', 'burlap']

       [['shape', 'SQUARE'], ['posn', 'upper left'], ['color', 'light blue'], ['texture', 'burlap']]
       - color: light blue
       - posn: upper left
       - shape: SQUARE
       - texture: burlap
       SQUARE
       {'color': 'light blue', 'posn': 'upper left', 'texture': 'burlap', 'shape': 'SQUARE'}

See more examples at ParseResults of accessing fields by results name.

Instance Methods
__init__(self, expr) x.__init__(...) initializes x; see help(type(x)) for signature | source code
postParse(self, instring, loc, tokenlist) | source code
Inherited from `ParseElementEnhance`: `__str__`, `checkRecursion`, `ignore`, `leaveWhitespace`, `parseImpl`, `streamline`, `validate` Inherited from `ParserElement`: `__add__`, `__and__`, `__call__`, `__eq__`, `__hash__`, `__invert__`, `__mul__`, `__ne__`, `__or__`, `__radd__`, `__rand__`, `__repr__`, `__req__`, `__rmul__`, `__rne__`, `__ror__`, `__rsub__`, `__rxor__`, `__sub__`, `__xor__`, `addCondition`, `addParseAction`, `canParseNext`, `copy`, `matches`, `parseFile`, `parseString`, `parseWithTabs`, `preParse`, `runTests`, `scanString`, `searchString`, `setBreak`, `setDebug`, `setDebugActions`, `setFailAction`, `setName`, `setParseAction`, `setResultsName`, `setWhitespaceChars`, `split`, `suppress`, `transformString`, `tryParse` Inherited from `object`: `__delattr__`, `__format__`, `__getattribute__`, `__new__`, `__reduce__`, `__reduce_ex__`, `__setattr__`, `__sizeof__`, `__subclasshook__`

Static Methods
Inherited from `ParserElement`: `enablePackrat`, `inlineLiteralsUsing`, `resetCache`, `setDefaultWhitespaceChars`

Class Variables
| __slotnames__ = ``[``]``
Inherited from `ParserElement`: `DEFAULT_WHITE_CHARS`, `packrat_cache`, `packrat_cache_lock`, `packrat_cache_stats`, `verbose_stacktrace`

Properties
Inherited from `object`: `__class__`

Method Details

### __init__(self, expr) (Constructor) | source code
x.__init__(...) initializes x; see help(type(x)) for signature Overrides: object.__init__ (inherited documentation)

### postParse(self, instring, loc, tokenlist) | source code
Overrides: ParserElement.postParse