#!/usr/bin/env python import getopt import re import sys indexes = {} class Fingerprint (object): pass def parse_fp(f): osname = None for line in f: if line.strip() == "": continue m = re.match(r'^Fingerprint\s+(.*?)\s*$', line) if m: if osname is not None: fp = Fingerprint() fp.osname = osname fp.tests = tests yield fp osname = m.group(1) tests = [] continue m = re.match(r'([\w.]+)=\[(.*)\]\s*$', line) if m: assert(osname is not None) name, vals_s = m.groups() vals = [float(x) for x in re.split(r'\s*,\s*', vals_s)] tests.append((name, vals)) continue assert(False) if osname: fp = Fingerprint() fp.osname = osname fp.tests = tests yield fp def do_file(filename): f = open(filename) try: for fp in parse_fp(f): indexes.setdefault(fp.osname, len(indexes) + 1) index = indexes[fp.osname] print index, n = 0 for test in fp.tests: for x in test[1]: print "%d:%g" % (n, x), n += 1 print finally: f.close() def main(): opts, args = getopt.gnu_getopt(sys.argv[1:], "") filenames = args for filename in filenames: do_file(filename) if __name__ == "__main__": main()