#!/usr/bin/python import re def hex_to_bytes(h): return ''.join(chr(int(h[i:i+2], 16)) for i in xrange(0,len(h),2)) def tv_parse(line): line = line.strip() g = re.match(r'TV\((.*?), ?(.*?)\)', line) if not g: raise ValueError, "PAS BIEN" pck = hex_to_bytes(g.group(1)) pec = hex_to_bytes(g.group(2)) return pck, pec def load_singles(s): x = {} for line in s.split('\n'): line = line.strip() if not line: continue pck, pec = tv_parse(line) if len(pck) != 1: continue pck = ord(pck) pec = ord(pec) if pck in x: raise ValueError, "pck %02x already seen" % pck x[pck] = pec return x