On Apr 24, 12:21 am, Daniel <[EMAIL PROTECTED]> wrote:

> On Apr 23, 4:22 pm, George Sakkis <[EMAIL PROTECTED]> wrote:> On Apr 23, 6:24 
> pm, Daniel <[EMAIL PROTECTED]> wrote:
>
> > > I have a list of strings, which I need to convert into tuples.  If the
> > > string is not in python tuple format (i.e. "('one', 'two')", "("one",
> > > 'two')", etc.), then I can just make it a 1-tuple (i.e. return
> > > (string,) ).  If it is in python tuple format, I need to parse it and
> > > return the appropriate tuple (it's ok to keep all tuple elements as
> > > strings).
>
> > > I think eval() will work for this, but I don't know what will be in
> > > the string, so I don't feel comfortable using that.
>
> > Check out one of the safe restricted eval recipes, 
> > e.g.http://preview.tinyurl.com/6h7ous.
>
> Thank you very much!

You're welcome. By the way, there's a caveat: simple_eval() doesn't
require a comma between tuple/list elements or dict pairs:

>>> simple_eval('(2 3)')
(2, 3)
>>> simple_eval('[1 2 ,3]')
[1, 2, 3]
>>> simple_eval('{ 1:"a" 2:"b"}')
{1: 'a', 2: 'b'}

Also parenthesized values are evaluated as 1-tuples
>>> simple_eval('(2)')
(2,)

Since it doesn't evaluate general expressions anyway, that's not
necessarily a problem. In any case, making it strict is left as an
exercise to the reader :)

George
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to