site de Fabien Torre


Source de footparser.py

1: #!/usr/bin/python 2: # -*- coding: utf-8 -*- 3: 4: 5: from xml.sax import ContentHandler,make_parser 6: 7: import sys 8: 9: 10: class FootHandler(ContentHandler): 11: 12: def __init__ (self): 13: "initialisation du handler" 14: self.nb_nuls = 0 15: self.victoires = {} 16: 17: 18: def startElement(self, name, attrs): 19: "ce que l'on fait pour chaque balise ouvrante" 20: 21: if name=="CHAMPIONNAT": 22: print '<html xmlns="http://www.w3.org/1999/xhtml">' 23: print '<head>' 24: print '<title>Ligue ',attrs['DIVISION'],', saison ',attrs['SAISON'],'</title>' 25: print '<link rel="stylesheet" href="foot.css" />' 26: print '</head>' 27: print '<body>' 28: print '<div class="pagelarge">' 29: print '<h1>Championnat de ligue ',attrs['DIVISION'], 30: print ' saison ',attrs['SAISON'],'</h1>' 31: elif name=="JOURNEE": 32: print '<div class="journee">' 33: print '<h2>Journée ',attrs['NUMERO'],' (',attrs['DATE'],')</h2>' 34: print '<table>' 35: elif name=="RENCONTRE": 36: ed = attrs['DOMICILE'] 37: ee = attrs['EXTERIEUR'] 38: sd = attrs['SCORED'] 39: se = attrs['SCOREE'] 40: 41: # sortie de la rencontre 42: 43: print '<tr><td>',ed,'</td><td>',sd,'</td><td>',se,'</td><td>',ee,'</td></tr>' 44: 45: 46: # mise a jour des stats 47: if sd==se: 48: self.nb_nuls += 1 49: elif sd > se: 50: self.victoires[ed] = self.victoires.get(ed,0) + 1 51: else: 52: self.victoires[ee] = self.victoires.get(ee,0) + 1 53: 54: 55: def endElement(self, name): 56: "ce que l'on fait pour chaque balise fermante" 57: 58: if name=="JOURNEE": 59: print '</table>' 60: print '</div>' 61: 62: 63: 64: 65: 66: 67: 68: # Parsing du fichier de résultats 69: 70: fh = FootHandler() 71: 72: parser = make_parser() 73: 74: parser.setContentHandler(fh) 75: 76: parser.parse(sys.argv[1]) # on parse le fichier donné en argument 77: 78: 79: 80: # Quelques stats 81: 82: print '<h2>Statistiques</h2>' 83: 84: print '<p>Nombre de matches nuls :',fh.nb_nuls,'<p>' 85: 86: print '<p>',fh.victoires['Bastia'],' victoires pour Bastia, ', fh.victoires['Lyon'],' pour Lyon.</p>' 87: 88: 89: 90: # Affichage des équipes et de leur nombre de victoires 91: 92: print '<table><tr><th>Équipes</th><th>Victoires</th></tr>' 93: 94: for equipe in fh.victoires.keys(): 95: print '<tr><th>',equipe,'</th><td>',fh.victoires[equipe],'</td></tr>' 96: 97: print '</table>' 98: 99: print '<br /><br />' 100: 101: # Tri des équipes par nombre de victoires 102: # en Python 2.4 : couples.sort(key=lambda x : x[1], reverse=True) 103: 104: 105: couples = fh.victoires.items() 106: 107: couples_inverses = [ (c[1],c[0]) for c in couples ] 108: 109: couples_inverses.sort() 110: couples_inverses.reverse() 111: 112: print '<table><tr><th>Équipes</th><th>Victoires</th></tr>' 113: 114: for c in couples_inverses: 115: print '<tr><th>',c[1],'</th><td>',c[0],'</td></tr>' 116: 117: print '</table>' 118: 119: 120: # Fin du HTML 121: 122: print '</div>' 123: print '</body>' 124: print '</html>' 125:
Fabien Torre Valid HTML5! Valid CSS!
site de Fabien Torre, université de Lille