I have modified the DictParser ,mentioned in previous blog, to handle object parsing. Previous version of DictParser can only handle basic data type, whereas in this version, user can pass a dict of objects for the DictParser to identify and it will replace those variables marked with ‘@’, treating them as objects.
An illustration is as below. Note the “second” key has an object @a included in the value list. This will be subsequently substitute by [1,3,4] after parsing.
## Text file
$first
aa:bbb,cccc,1,2,3
1:1,bbb,cccc,1,2,3
$second
ee:bbb,cccc,1,2,3
2:1,bbb,@a,1,2,3
## end of file
The output from DictParser are as followed:
p = DictParser(temp_working_file, {'a':[1,3,4]}) #pass in a dict with obj def p.parse_the_full_dict() print p.dict_of_dict_obj >>> {'second': {'ee': ['bbb', 'cccc', 1, 2, 3], 2: [1, 'bbb', [1, 3, 4], 1, 2, 3]}, 'first': {'aa': ['bbb', 'cccc', 1, 2, 3], 1: [1, 'bbb', 'cccc', 1, 2, 3]}}
If the object is not available or not pass to DictParser, it will be treated as string.
Using the ‘@’ to denote the object is inspired by the Julia programming language where $xxx is used to substitute objects during printing.