On Jun 4, 3:14 pm, Alain Ketterlin <al...@dpt-info.u-strasbg.fr> wrote: > richard <pullenjenn...@gmail.com> writes: > > Hi guys i am having a bit of dificulty finding the best approach / > > solution to parsing a file into a list of objects / nested objects any > > help would be greatly appreciated. > > > #file format to parse .txt > > [code] > > An instance of TestArray > > a=a > > b=b > > c=c > > List of 2 A elements: > > Instance of A element > > [...] > > Below is a piece of code that seems to work on your data. It builds a > raw tree, i leave it to you to adapt and built the objects you want. The > assumption is that the number of leading blanks faithfully denotes > depth. > > As noted in another message, you're probably better off using an > existing syntax (json, python literals, yaml, xml, ...) > > -- Alain. > > #!/usr/bin/env python > > import sys > import re > > RE = re.compile("( *)(.*)") > stack = [("-",[])] # tree nodes are: (head,[children]) > for line in sys.stdin: > matches = RE.match(line) > if len(matches.group(2)) > 0: > depth = 1 + len(matches.group(1)) > while len(stack) > depth: > stack[-2][1].append(stack[-1]) > del stack[-1] > pass > stack.append( (matches.group(2),[]) ) > pass > pass > while len(stack) > 1: > stack[-2][1].append(stack[-1]) > del stack[-1] > pass > > print(stack)
thank you both for your replies. Unfortunately it is a pre-existing file format imposed by an external system that I can't change. Thank you for the code snippet. -- http://mail.python.org/mailman/listinfo/python-list