Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- s = """A
- B
- C
- D
- E
- F
- G
- H
- I
- K
- L"""
- class CNode:
- children, parent, data = [], None, ""
- def __init__(self, parent, data):
- self.children = []
- self.parent = parent
- self.data = data
- def to_string(self):
- return "[" + self.data + ''.join([c.to_string() for c in self.children]) + "]"
- def to_dict(self):
- return dict((c.data, c.to_dict()) for c in self.children)
- import re
- r = re.compile(r'\S')
- def get_indent_value(line):
- m = r.search(line)
- return (m.start(), m.group(0))
- def get_parent(node, level):
- if level == 0:
- return node
- return get_parent(node.parent, level-1)
- root = CNode(None,"")
- parent = root
- lines = s.split('\n')
- level = 0
- for line in lines:
- i, v = get_indent_value(line)
- if i < level:
- parent = get_parent(parent, level-i)
- if i > level:
- parent = current
- current = CNode(parent,v)
- parent.children.append(current)
- level = i
- print root.to_string()
- print root.to_dict()
Add Comment
Please, Sign In to add comment