from gedcom.parser import Parser from gedcom.element.individual import IndividualElement from gedcom.tags import GEDCOM_TAG_FAMILY_CHILD import codecs def get_indis_by_full_name(in_name, in_surname , root_el): result = [] # Iterate through all root child elements for element in root_el: if isinstance(element, IndividualElement): name, surname = element.get_name() if name in in_name and surname in in_surname: result.append(element) return result def load_file(file_path): all_lines = [] with codecs.open(file_path, "r", encoding="utf-8-sig", errors='ignore') as input: all_lines = input.readlines() gedcom_parser = Parser() gedcom_parser.parse([(a + '\r\n').encode('utf-8-sig') for a in all_lines], strict=False) return gedcom_parser gedcom_parser = load_file("korets_one_person.ged") element_dict = gedcom_parser.get_element_dictionary() root_child_elements = gedcom_parser.get_root_child_elements() boris = get_indis_by_full_name('Борис', 'Эйсурович',root_child_elements)[0] gedcom_parser.get_families(boris, GEDCOM_TAG_FAMILY_CHILD)