#!/usr/bin/env python import re import sys def get_numbers(string): """ Get numbers from string. Works if separated by commas... >>> get_numbers('1, 2, 3,4') [1, 2, 3, 4] ...and hyphens: >>> get_numbers('1-2 - 3-4') [1, 2, 3, 4] Ignores numbers in parentheses: >>> get_numbers('1-2 (8) - 3 (10) -11.') [1, 2, 3, 11] """ string = re.sub('\(\d+\)', '', string) parts = [s for s in re.split('\D', string) if s] return [int(s) for s in parts] def get_repeated(list1, list2): """ Get the repeating numbers from two lists: >>> get_repeated([1, 2, 3, 4, 5, 6], [2, 4, 6, 8, 10]) [2, 4, 6] REturns sorted: >>> get_repeated([6, 5, 2, 3, 4, 1], [10, 4, 2, 8, 6]) [2, 4, 6] """ s1 = set(list1) s2 = set(list2) return sorted(s1 & s2) def join_numbers(l): """ Join the numbers with hyphens: >>> join_numbers([1, 4, 2, 3]) '1 - 4 - 2 - 3' """ return ' - '.join(str(v) for v in l) if __name__ == "__main__": f1 = open(sys.argv[1]) f2 = open(sys.argv[2]) c1 = get_numbers(f1.read()) c2 = get_numbers(f2.read()) intersection = get_repeated(c1, c2) print(join_numbers(intersection))