How to convert a string into a list
steve-REMOVE-THIS at cybersource.com.au
Tue Oct 5 04:11:01 CEST 2010
On Tue, 05 Oct 2010 11:25:58 +1000, James Mills wrote:
> On Tue, Oct 5, 2010 at 11:10 AM, Mark Phillips
> <mark at phillipsmarketing.biz> 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.
> If you trust the source of the data the following is probably the
>>>> s = "['1', '2']"
>>>> [int(x) for x in eval(s)]
> [1, 2]
You fail at reading comprehension :) Perhaps you missed your coffee this
The Effbot has a nice little recipe for safely parsing strings as Python
This is probably overkill for the specific task. Depending on how
forgiving you want to be of syntax, this may be simple enough:
>>> s = "[ '1' , \"2\" , '3', ' 4 ', 5 ]"
>>> s = s.replace("'", "").replace('"', "")
>>> s = s.strip().strip('').replace(',', ' ')
>>> [int(i) for i in s.split()]
[1, 2, 3, 4, 5]
If you don't need to enforce a specific syntax, don't bother, just chop
off the rubbish you don't need with strip() and replace().
More information about the Python-list