Help needed with nested parsing of file into objects
Alain Ketterlin
alain at dpt-info.u-strasbg.fr
Tue Jun 5 17:33:03 EDT 2012
richard <pullenjenna10 at gmail.com> writes:
>> > An instance of TestArray
>> > a=a
>> > b=b
>> > c=c
>> > List of 2 A elements:
>> > Instance of A element
>> > a=1
>> > b=2
>> > c=3
>> > Instance of A element
>> > d=1
>> > e=2
>> > f=3
>> > List of 1 B elements
>> > Instance of B element
>> > a=1
>> > b=2
>> > c=3
>> > List of 2 C elements
>> > Instance of C element
>> > a=1
>> > b=2
>> > c=3
>> > Instance of C element
>> > a=1
>> > b=2
>> > c=3
[...]
> Hi Alain thanks for the reply. With regards to the missing case "An
> Instance of" im not sure where/ how that is working as the case i put
> in originally "Instance of" is in the file and been handled in the
> previous case.
Both cases are different in your example above. Top level elements are
labeled "An instance ...", whereas "inner" instances are labeled
"Instance of ...".
> Also when running the final solution im getting a list of [None, None]
> as the final stack?
There's only one way this can happen: by falling through to the last
case of build(). Check the regexps etc. again.
> just busy debugging it to see whats going wrong. But sorry should have
> been clearer with regards to the format mentioned above. The objects
> are been printed out as dicts so where you put in
>
> elif "An Instance of" in couple[0]:
> return dict(couple[1])
>
> should still be ?
> elif "Instance of" in couple[0]:
> match = re.search("Instance of (.+) element", couple[0])
> return ("attr_%s" % match.group(1),Stanza(couple[1])) #
> instantiating new stanza object and setting attributes.
Your last "Instance of..." case is correct, but "An instance..." is
different, because there's no containing object, so it's probably more
like: return Stanza(couple[1]).
-- Alain.
More information about the Python-list
mailing list