Thanks to everyone for their suggestions. I learned a lot from them! Mark
On Mon, Oct 4, 2010 at 11:54 PM, Chris Rebert <c...@rebertia.com> wrote: > On Mon, Oct 4, 2010 at 10:33 PM, Arnaud Delobelle <arno...@gmail.com> > wrote: > > MRAB <pyt...@mrabarnett.plus.com> writes: > >> On 05/10/2010 02:10, Mark Phillips wrote: > >>> I have the following string - "['1', '2']" that I need to convert into > a > >>> list of integers - [1,2]. The string can contain from 1 to many > >>> integers. Eg "['1', '7', '4',......,'n']" (values are not sequential) > >>> > >>> What would be the best way to do this? I don't want to use eval, as the > >>> string is coming from an untrusted source. > >>> > >> I'd probably use a regex, although others might think it's overkill. :-) > >> > >>>>> import re > >>>>> s = "['1', '2']" > >>>>> [int(n) for n in re.findall(r'-?\d+', s)] > >> [1, 2] > >> > >> An alternative is: > >> > >>>>> s = "['1', '2']" > >>>>> [int(n.strip("'[] ")) for n in s.split(",")] > >> [1, 2] > > > > I'll add: > > > >>>> s = ['1', '2', '42'] > >>>> [int(x) for x in s.split("'")[1::2]] > > [1, 2, 42] > > There's also: > >>> s = "['1', '2']" > >>> from ast import literal_eval > >>> [int(n) for n in literal_eval(s)] > [1, 2] > > Which is safe, but less strict. > > Cheers, > Chris > -- > http://blog.rebertia.com > -- > http://mail.python.org/mailman/listinfo/python-list >
-- http://mail.python.org/mailman/listinfo/python-list