10f911992a31b6eecce2953bf124cdb13f448bde3mbligh#!/usr/bin/python 20f911992a31b6eecce2953bf124cdb13f448bde3mblighimport re, sys 30f911992a31b6eecce2953bf124cdb13f448bde3mbligh 40f911992a31b6eecce2953bf124cdb13f448bde3mblighdef parse_file(filename): 50f911992a31b6eecce2953bf124cdb13f448bde3mbligh data = {} 60f911992a31b6eecce2953bf124cdb13f448bde3mbligh for line in open(filename): 70f911992a31b6eecce2953bf124cdb13f448bde3mbligh if re.match('\d', line): 80f911992a31b6eecce2953bf124cdb13f448bde3mbligh (samples, percent, symbol) = line.split() 90f911992a31b6eecce2953bf124cdb13f448bde3mbligh data[symbol] = float(percent) 100f911992a31b6eecce2953bf124cdb13f448bde3mbligh return data 110f911992a31b6eecce2953bf124cdb13f448bde3mbligh 120f911992a31b6eecce2953bf124cdb13f448bde3mbligh 130f911992a31b6eecce2953bf124cdb13f448bde3mblighdata1 = parse_file(sys.argv[1]) 140f911992a31b6eecce2953bf124cdb13f448bde3mblighdata2 = parse_file(sys.argv[2]) 150f911992a31b6eecce2953bf124cdb13f448bde3mbligh 160f911992a31b6eecce2953bf124cdb13f448bde3mblighdelta = {} 170f911992a31b6eecce2953bf124cdb13f448bde3mblighfor symbol in data1.keys() + data2.keys(): 180f911992a31b6eecce2953bf124cdb13f448bde3mbligh delta[symbol] = data1.get(symbol, 0) - data2.get(symbol, 0) 190f911992a31b6eecce2953bf124cdb13f448bde3mbligh 200f911992a31b6eecce2953bf124cdb13f448bde3mblighdef lookup_delta(symbol): 210f911992a31b6eecce2953bf124cdb13f448bde3mbligh return delta[symbol] 220f911992a31b6eecce2953bf124cdb13f448bde3mbligh 230f911992a31b6eecce2953bf124cdb13f448bde3mblighsorted_deltas = sorted(delta.keys(), key=lookup_delta, reverse=True) 240f911992a31b6eecce2953bf124cdb13f448bde3mbligh 250f911992a31b6eecce2953bf124cdb13f448bde3mblighif len(sorted_deltas) > 40: 260f911992a31b6eecce2953bf124cdb13f448bde3mbligh sorted_deltas = sorted_deltas[0:20] + sorted_deltas[-20:] 270f911992a31b6eecce2953bf124cdb13f448bde3mbligh 280f911992a31b6eecce2953bf124cdb13f448bde3mblighfor symbol in sorted_deltas: 290f911992a31b6eecce2953bf124cdb13f448bde3mbligh print '%2.3f %s' % (delta[symbol], symbol) 30