import datetime import csv import sqlite3 from rich.console import Console from rich.table import Table from rich.traceback import install import xml.etree.ElementTree as ET install(show_locals=True) class Runner: def __init__(self, first, last, club, country, card, o_class, controls, splits): self.first = first self.last = last self.club = club self.country = country self.card = card self.o_class = o_class self.controls = controls self.splits = splits def fullname(self): return '{} {}'.format(self.first, self.last) def xmlToClass(xml_file = 'entries_KOK_Sommercup,_løp_2.xml'): tree = ET.parse(xml_file) root = tree.getroot() runnerarray = [] for person_root in root[1:]: first = person_root[1][1][1].text last = person_root[1][1][0].text try: club = person_root[2][1].text except: club = "None" country = person_root[1][3].text try: card = int(person_root[3].text) except: card = 0 try: o_class = person_root[4][1].text except: o_class = "None" runnerarray.append(Runner(first, last, club, country, card, o_class, [], [])) return runnerarray def ttimeMtrToClass(csv_file, runnerarray): csvreader = csv.reader(open(csv_file)) fields = next(csvreader) fields = [] rows = [] # hver rad er brikkenummer med tilhørende info for row in csvreader: rows.append(row) for row in rows: controls = [] splits = [] # postkodene kommer på oddetall fra og med den 11. De blir hevet inn i controls for item in row[11::2]: if item != '000' and item != '0000' and item != '00000': controls.append(int(item)) # strekktidene kommer på partall fra og med den 12. De blir hevet i splits. for item in row[12::2]: if item != '000' and item != '0000' and item != '00000': splits.append(int(item)) print(row[6]) # looper gjonnom løperobjektene og legger til poster og strekktider for runner in runnerarray: if runner.card == int(row[6]): runner.controls = controls runner.splits = splits def printTable(Runners): table = Table(title="Runners") table.add_column("Name", justify="right", style="cyan", no_wrap=True) table.add_column("club", style="magenta") table.add_column("card", style="red") table.add_column("class", justify="right", style="green") for i in Runners: table.add_row(i.fullname(), i.club ,str(i.card), i.o_class) console = Console() console.print(table) if __name__ == "__main__": Runners = xmlToClass() #print(Runners[4].last) #printTable(Runners) ttimeMtrToClass('mtr.csv', Runners) for i in Runners: print(i.first + ' ' + i.last) print(i.controls) #print(i.splits) try: print(str(datetime.timedelta(seconds = i.splits[-1]))) except: print('ikke deltatt')