On 5 Nov 2006 04:34:32 -0800, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > Hi, > I have a string '((1,2), (3,4))' and I want to convert this into a > python tuple of numbers. But I do not want to use eval() because I do > not want to execute any code in that string and limit it to list of > numbers. > Is there any alternative way? >
?? I want to convert this into a python tuple of numbers ?? Do you want a python tuple with those numbers ie (1,2, 3,4), or a direct evaluation giving a tuple of tuples with those numbers, ie ((1,2), (3,4)) If the former then: >>> a, l = '((1,2), (3,4), (-5,-6),(12,-13), (a,b), (0.1,0.2))', [] >>> for c in a.split(','): ... try: ... c = c.replace('(','').replace(')','') ... if '.' in c: l.append(float(c)) ... else: l.append(int(c)) ... except: pass ... >>> tuple(l) (1, 2, 3, 4, -5, -6, 12, -13, 0.10000000000000001, 0.20000000000000001) >>> Its not so good with floats, but if you are only expecting integers you can use. >>> a, l = '((1,2), (3,4), (-5,-6),(12,-13), (a,b), (0.1,0.2))', [] >>> for c in a.split(','): ... try: l.append(int(c.replace('(','').replace(')',''))) ... except: pass ... >>> tuple(l) (1, 2, 3, 4, -5, -6, 12, -13) >>> HTH :) -- http://mail.python.org/mailman/listinfo/python-list