import glob import codecs result = {} def parse(xs): correct = '' pairwise = '' oracle = '' for x in xs: if 'Oracle' in x: oracle = "Oracle: " + " ".join(x.split(' ')[2:]) elif 'Correct' in x: correct = " ".join(x.split(' ')[1:]) elif 'Pairwise' in x: pairwise = " ".join(x.split(' ')[1:]) return (correct, pairwise, oracle) for fname in glob.glob('output/*err.txt'): with codecs.open(fname,encoding='utf-8') as f: content = f.read().split('\n') (lang,exp, pos,_) = fname.split('/')[1].split('_') if exp in result and lang in result[exp]: result[exp][lang].append((pos,parse(content[1:9]),content[1:9])) elif exp in result: result[exp][lang] = [(pos,parse(content[1:9]), content[1:9])] else: result[exp]= {lang:[(pos,parse(content[1:9]), content[1:9])]} for (exp, t) in sorted(result.iteritems(),reverse=True): if exp == 'c': print '\n[Experiment 1]' else: print '\n[Experiment 0]' for (lang,ls) in sorted(result[exp].iteritems()): for (pos, short,i) in sorted(ls): if len(i) == 0: print ' ', '['+lang+'-'+pos+']','N/A' else: print ' ', '['+lang+'-'+pos+']','\n ', ' '.join(short) for (exp,t) in sorted(result.iteritems(),reverse=True): if exp == 'c': print '\n[Experiment 1]' else: print '\n[Experiment 0]' for (lang,ls) in sorted(result[exp].iteritems()): for (pos,_,i) in sorted(ls): if len(i) == 0: print ' ', '['+lang+'-'+pos+']','N/A' else: print ' ', '['+lang+'-'+pos+']','\n ', '\n '.join(i)