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


--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to