Geschrieben ist es in Python 3 (mit numpy). Es ist teilweise vielleicht etwas wirr, da es mein erstes Programm in Python3 ist. Außerdem scheine ich unglaublich gerne deutsche und englische Variablen gleichzeitig zu nutzen.
[src=python]
import numpy
def create_table(mm):
unsorted = numpy.zeros( (len(mm), 5), dtype=numpy.int)
unsorted[:,0] = numpy.transpose(range(0,len(mm)))
for k in range(0, len(mm)):
for i, val in enumerate( mm[k,:] ):
if val[0] >= 0:
unsorted[k,2] += val[0]
unsorted[k,3] += val[1]
unsorted[i,2] += val[1]
unsorted[i,3] += val[0]
if val[0] > val[1]:
unsorted[k,1] += 3
elif val[0]==val[1]:
unsorted[k,1] += 1
unsorted[i,1] += 1
elif val[0] < val[1]:
unsorted[i,1] += 3
unsorted[:,4]=numpy.transpose(unsorted[:,2]-unsorted[:,3])
ind = numpy.lexsort((unsorted[:,2],unsorted[:,4],unsorted[:,1]))
table = numpy.flipud(unsorted[ind])
return table
def pretty_table(tabelle,vereine):
out = 'Verein\tT:GT\tDif\tPkt\n'
for idx, row in enumerate(tabelle):
out += str(idx+1) + '.\t' + list(vereine.values())[row[0]] + '\t' + str(row[2]) + ':' + str(row[3]) + '\t' + str(row[4]) + '\t' + str(row[1]) + '\n'
return out
def pretty_table_html(tabelle,vereine):
out = '<table width="100%" align="left">\n'
out += '<tr><th></th><th align="center">Verein</th><th align="center">T:GT</th><th align="center">Diff</th><th align="center">Pkt</th></tr>\n'
for idx, row in enumerate(tabelle):
out += '<tr><td align="right">' + str(idx+1) + '.</td><td>' + list(vereine.values())[row[0]] + '</td><td align="center">' + str(row[2]) + ':' + str(row[3]) + '</td><td align="center">' + str(row[4]) + '</td><td align="center">' + str(row[1]) + '</td></tr>\n'
out += '</table>'
return out
spieltage = 5;
# liste der vereine
vereine = {'FCB': 'FC Bayern München',
'Lev': 'Bayer 04 Leverkusen',
'Main': 'FSV Mainz 05',
'Da98': 'SV Darmstadt 98',
'FCA': 'FC Augsburg',
'SVW': 'SV Werder Bremen',
'BVB': 'Borussia Dortmund',
'Wolf': 'VfL Wolfsburg',
'Stgt': 'VfB Stuttgart',
'HSV': 'Hamburger SV',
'Hoff': '1899 Hoffenheim',
'Ing': 'FC Ingolstadt',
'H96': 'Hannover 96',
'Herth': 'Hertha BSC Berlin',
'S04': 'FC Schalke 04',
'BMG': 'Bor. Mönchengladbach',
'SGE': 'Eintracht Frankfurt',
'Köln': '1. FC Köln' }
nrv = len( vereine )
matchmatrix = numpy.empty( ( nrv, nrv, 2 ), dtype=numpy.int )
matchmatrix.fill(-1)
mitspieler = ['Fhynn',
'Hezu',
'Nowhere_Man',
'enteo',
'FrostAgent',
'matux',
'MingsPing',
'Laui',
'Losty',
'TheOnly1',
'usernametaken',
'Ruper',
'Seon',
'CrossFir3',
'Schunkelaugust',
'weristes',
'Buschfunk',
'kraeuterdude',
'P3rsona' ]
mmlist = [numpy.copy(matchmatrix) for i in range(0,len(mitspieler))]
for k in range(1, spieltage+1):
with open( str( k ), 'r') as f:
content = f.read().splitlines()
matchday = numpy.empty( ( nrv/2, 2 ), dtype=numpy.int )
# begegnungen/vereine einlesen
for i in range(3,12): matchday[i-3, 0] = list(vereine.keys()).index(content[0].split('\t')
);
for i in range(0,9): matchday[i, 1] = list(vereine.keys()).index(content[10].split('\t'));
# echte ergebnisse eintragen
for i in range(0,9): matchmatrix[ matchday[i,0], matchday[i,1] ] = numpy.asarray(content[i+1].split(':'), dtype=numpy.int);
# ergebnisse der einzelnen mitspieler
for i in range(11,len(mitspieler)+11):
erg = content.split('\t')
# punktzahlen entfernen (seit 1984 gab es keine zweistellige anzahl von toren für ein team)
for key, val in enumerate(erg[3:12]):
if len(val) > 3: erg[key+3] = val[:-1]
for i in range(0,9):
if len(erg[i+3]) > 0:
mmlist[mitspieler.index(erg[2])][ matchday[i,0], matchday[i,1] ] = numpy.asarray(erg[i+3].split(':'), dtype=numpy.int);
else:
mmlist[mitspieler.index(erg[2])][ matchday[i,0], matchday[i,1] ] = matchmatrix[ matchday[i,0], matchday[i,1] ]
with open( 'tables/Tabelle', 'w' ) as f:
f.write( pretty_table( create_table(matchmatrix), vereine ) )
html = '<!DOCTYPE html>\n<html>\n<head>\n<LINK href="style.css" rel="stylesheet" type="text/css">\n</head>\n<body>\n'
for key, val in enumerate(mitspieler):
#with open( 'tables/' + val, 'w' ) as f:
# f.write( pretty_table( create_table(mmlist[key]), vereine ) )
html += '<div id="tab"><h3>' + val + '</h3>\n' + pretty_table_html( create_table(mmlist[key]), vereine ) + '</div>'
html += '</body>'
with open( 'tables/index.html', 'w' ) as f:
f.write( html )
[/src]
Wenn man es selber ausführen will: Auf jeden Fall die Pfadangaben anpassen!
Die Ordnerstruktur sieht wie folgt aus:
Die Textdateien sind nach den Spieltagen benannt und die Tabelle in kicktipp unter dem Punkt Livepunkte kopiert und eingefügt:
In der Datei sieht das dann so aus (Die Tabs sind wichtig, da sie abgezählt sind in dem Programm. Es ist wichtig auch die Tabellenzelle oben links zu kopieren.):