On Thu, 26 May 2005 19:53:38 +0800, flyaflya wrote: > a = "(1,2,3)" > I want convert a to tuple:(1,2,3),but tuple(a) return ('(', '1', ',', > '2', ',', '3', ')') not (1,2,3)
Others have already given some suggestions. Here are some others. You didn't say where the input string a came from. Do you control it? Instead of using: String_Tuple_To_Real_Tuple("(1,2,3)") can you just create the tuple in the first place? a = (1, 2, 3) Second suggestion: if you know that the input string will ALWAYS be in the form "(1,2,3)" then you can do this: a = "(1,2,3)" a = a[1:-1] # deletes leading and trailing parentheses a = a.split(",") # creates a list ["1", "2", "3"] (items are strings) a = [int(x) for x in a] # creates a list [1, 2, 3] (items are integers) a = tuple(a) # coverts to a tuple or as a one-liner: a = "(1,2,3)" a = tuple([int(x) for x in a[1:-1].split(",")]) Best of all, wrap your logic in a function definition with some error-checking: def String_Tuple_To_Real_Tuple(s): """Return a tuple of ints from a string that looks like a tuple.""" if not s: return () if (s[0] == "(") and s[-1] == ")"): s = s[1:-1] else: raise ValueError("Missing bracket(s) in string.") return tuple([int(x) for x in s.split(",")]) Hope this helps, -- Steven. -- http://mail.python.org/mailman/listinfo/python-list