Steven D'Aprano, On Dec 21, 2:08 am, Steven D'Aprano <[EMAIL PROTECTED]> wrote: > On Thu, 20 Dec 2007 20:27:23 -0800, [EMAIL PROTECTED] wrote: > > Stef, > > > For clarification, there is nothing hazardous about using eval on the > > string that you presented. > > > t = eval('(0, 0, 0, 255), (192, 192, 192, 255), True, 8') > > > Whether or not this is the "simplest" solution, remains a question. > > For clarification, if all the poster wanted was to convert the *specific* > *known* string to a tuple, he would be better off just writing it as a > tuple:
Steven, No, that's not what he asked. Read the original question. > > t = (0, 0, 0, 255), (192, 192, 192, 255), True, 8 > > is much faster than calling eval(). > > But obviously that's not what the Original Poster wants to do. There's nothing "Obviously" Implied about what the author wants to do here, besides convert an innocent string object to a tuple. > The tuple > give was indicative of input that comes from somewhere Really? I personally can't tell that from his provided example. There's definitely not enough info on this one. > -- perhaps a > config file, perhaps a web form, perhaps a command line argument, who > knows? The point is, if the string comes from a user, then it could > contain anything: > > '(0, 0, 0, 255), (192, 192, 192, 255), True, 8' > '1000, 10001, 100002, 1000004' > '"foo bar baz".split()' > '[i for i in range(100000)]' > '[19852.7412]*100000**2' > '__import__("os").system("ls -r *")' > > Just because the OP's specific example is safe doesn't make eval() safe. Agreed. And after the last couple comments, he was probably made aware of that. Thank you for reiterating :-) > > -- > Steven -- http://mail.python.org/mailman/listinfo/python-list