# go from 1-5,7,9-11# to 1,2,3,4,5,7,9,11s = "1-5,7,9-11"def tokenizer (text, sep): try: while True: token = '' while text[0] == sep: text = text[1:] index = 0 while text[index] != sep: token += text[index] index += 1 yield token text = text[index:] #print text, index except IndexError: if token != '': yield tokenprint s, "\n\tyields:"for t in tokenizer(s, ','): if '-' in t: #print 'range:', t u = tokenizer(t, '-') x = int(u.next()) y = int(u.next()) for r in xrange(x,y): print r print y else: #print 'single:', t print t