#!/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))
Comments