On Tue, 05 Oct 2010 11:25:58 +1000, James Mills wrote: > On Tue, Oct 5, 2010 at 11:10 AM, Mark Phillips > <m...@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 > simplest: > >>>> s = "['1', '2']" >>>> [int(x) for x in eval(s)] > [1, 2]
You fail at reading comprehension :) Perhaps you missed your coffee this morning? The Effbot has a nice little recipe for safely parsing strings as Python objects: http://effbot.org/zone/simple-iterator-parser.htm 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(). -- Steven -- http://mail.python.org/mailman/listinfo/python-list