leftPart = "1fgh0C1ert" rightPart = "22AB3" result = [] def gramma(string): i = 0 while i != len(string): if string[i].isdigit() or string[i].islower(): t = string[i] i += 1 for j in string[i:]: if j.isdigit() or string[i].islower(): t += j i += 1 else: break result.append("<{0}, {1}>".format(0, t)) else: result.append("<{0}, {1}>".format(1, string[i])) i += 1 if __name__ == '__main__': gramma(leftPart) gramma(rightPart) for i in result: print ileftPart = "1fgh0C1ert" rightPart = "22AB3" result = [] def gramma(string): i = 0 while i != len(string): if string[i].isdigit() or string[i].islower(): t = string[i] i += 1 for j in string[i:]: if j.isdigit() or string[i].islower(): t += j i += 1 else: break result.append("<{0}, {1}>".format(0, t)) else: result.append("<{0}, {1}>".format(1, string[i])) i += 1 if __name__ == '__main__': gramma(leftPart) gramma(rightPart) for i in result: print i