How to convert a string into a list

Mark Phillips mark at phillipsmarketing.biz
Tue Oct 5 15:41:12 CEST 2010


Thanks to everyone for their suggestions. I learned a lot from them!

Mark

On Mon, Oct 4, 2010 at 11:54 PM, Chris Rebert <clp2 at rebertia.com> wrote:

> On Mon, Oct 4, 2010 at 10:33 PM, Arnaud Delobelle <arnodel at gmail.com>
> wrote:
> > MRAB <python at 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20101005/2308f1fe/attachment.html>


More information about the Python-list mailing list