#!/usr/bin/env python3 import csv class Type(Enum): Humans, Prokaryotes, Photosynthesizers, Eukaryotic, Dinosaurs, Viruses class GraphNode: def __init__(self, children : list[GraphNode] = [], parent : GraphNode = None, name="", description="", typ : Type = None): self.children = children self.name = name self.description = description def add_child(self, child : GraphNode) -> None: self.children += child def remove_child(self, name : str) -> GraphNode or None: for c in self.children: if name == c.name: self.children.remove(c) def set_parent(self, parent : GraphNode) -> None: self.parent = parent def set_name(self, name:str) -> None: self.name = name def set_desc(self, desc:str) -> None: self.description = desc if __name__ == "__main__": multi_word_names = ["old world monkeys", "homo sapiens", "new world monkeys", "birds (avies)", "water lillies", "star anis & relatives", "vascular plants", "brown algae", "excavata (protists)", "sar protists", "seed plants", "red algae", "slime molds", "cellular slime molds", "plasmodial slime molds", "gram positive bacteria", "lemures lorises and bush babies"] filename = "in.txt" outfile = "parsed.txt" nodes = [] with open(filename) as f: current_node = None for line in f: in_body = False if (len(line) == 1 or line in multi_word_names) and not in_body: node = GraphNode(name=line) current_node = node nodes.append(node) else: current_node.description = line for node in nodes: