def grammemes_xml2csv(self, persistent=True): env = Environment() filename_gram = env.filename_grammemes_xml() dfcols = ['name', 'alias', 'description'] df_xml = pd.DataFrame(columns=dfcols) try: tree = ET.ElementTree(file=filename_gram) except: env.debug(1, ['Failed to load grammemes from XML:', filename_gram]) else: env.debug(1, ['Read grammemes:', filename_gram]) for elem in tree.iter('grammeme'): #print(elem.tag, elem.attrib) sattr = elem.attrib.get('include') if sattr == 'on': sname = sali = sdesc = '' for child in elem: if child.tag.lower() == 'name': sname = child.text.upper() elif child.tag.lower() == 'alias': sali = child.text.upper() elif child.tag.lower() == 'description': sdesc = child.text.lower() s = pd.Series(data=[sname, sali, sdesc], index=dfcols) df_xml = df_xml.append(s, ignore_index=True) df_xml.index.name = 'idgram' if persistent: filename_csv = env.filename_grammemes_csv() env.debug(1, ['Write grammemes to CSV:', filename_csv]) df_xml.to_csv(filename_csv, encoding='utf-8') return df_xml
def grammemes(self, mode=0): env = Environment() dfgram = pd.DataFrame() filename_gram = env.filename_grammemes_csv() try: dfgram = pd.read_csv(filename_gram, index_col='idgram', encoding='utf-8') except: env.debug(1, ['Failed to load grammemes CSV file', filename_gram]) else: env.debug(1, ['Load grammemes CSV file', filename_gram]) if mode == 1: return dfgram.to_dict().get('name') else: return dfgram