Module pyparsing :: Class Dict
[hide private]
[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 :class:`ParseResults` of accessing fields by results name.

Nested Classes [hide private]
Instance Methods [hide private]
 
__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__, __getitem__, __hash__, __invert__, __iter__, __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 [hide private]

Inherited from ParserElement: enablePackrat, inlineLiteralsUsing, resetCache, setDefaultWhitespaceChars

Class Variables [hide private]

Inherited from ParserElement: DEFAULT_WHITE_CHARS, packrat_cache, packrat_cache_lock, packrat_cache_stats, verbose_stacktrace

Inherited from ParserElement (private): _packratEnabled

Properties [hide private]

Inherited from object: __class__

Method Details [hide private]

__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