[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.python

Re: string to list when the contents is a list

Tim Chase

2/18/2010 3:19:00 PM

Wes James wrote:
> I have been trying to create a list form a string. The string will be
> a list (this is the contents will look like a list). i.e. "[]" or
> "['a','b']"
>
> The "[]" is simple since I can just check if value == "[]" then return []
>
> But with "['a','b']" I have tried and get:
>
> a="['a','b']"
>
> b=a[1:-1].split(',')
>
> returns
>
> [ " 'a' "," 'b' " ]
>
> when I want it to return ['a','b'].

Just to add to the list of solutions I've seen, letting the
built-in csv module do the heavy lifting:

>>> s = "['a','b']"
>>> import csv
>>> no_brackets = s[1:-1] # s.strip(' \t[]')
>>> c = csv.reader([no_brackets], quotechar="'")
>>> c.next()
['a', 'b']

This also gives you a bit of control regarding how escaping is
done, and other knobs & dials to twiddle if you need.
Additionally, if you have more than one string to process coming
from an iterable source (such as a file), you can just pass that
iterator to csv.reader() instead of concocting a one-element list.

-tkc