>>> def expand(s):
... for p in s.split(","):
... r = p.split("-")
... if len(r) == 1:
... yield str(r[0])
... else:
... for i in range(int(r[0]), int(r[1]) + 1):
... yield str(i)
...
>>> ",".join(expand("1,3-5,7"))
'1,3,4,5,7'
>>> ",".join(expand("1-5,8,10,13-19"))
'1,2,3,4,5,8,10,13,14,15,16,17,18,19'
Очевидно, что это не получится различными интересными способами, если ввод не соответствует предположениям (буквы, обратные последовательности и т. Д.) И не работает с отрицательными числами.