Hello. I have a reeeealy huge string, which looks like ['elem1','elem2',(...)] and contains about 100 000(!) elements. What is the best method to change it back to list?
+2
A:
eval("['elem1','elem2']") gives you back list ['elem1','elem2']
If you had string looking like this ["elem1","elem2",(...)] you might use json.read() (in python 2.5 or earlier) or json.loads() (in python 2.6) from json module to load it safely.
Kamil Szot
2010-06-30 08:37:14
Does the JSON parser distinguish between single- and double-quotes?
detly
2010-06-30 08:53:14
It seems so. Trying to json.read("['a']") gives json.ReadException: Input is not valid JSON: '['a']'
Kamil Szot
2010-06-30 10:30:55
A:
If you don't want to use eval
, this may work:
big_string = """['oeu','oeu','nth','nthoueoeu']"""
print big_string[1:-2].split("'")[1::2]
PreludeAndFugue
2010-06-30 08:50:34
+1
A:
One possible solution is:
input = "['elem1', 'elem2' ] "
result_as_list = [ e.strip()[1:-1] for e in input.strip()[1:-1].split(",") ]
This builds the complete result list in memory. You may switch to generator expression
result_as_iterator = ( e.strip()[1:-1] for e in input.strip()[1:-1].split(",") )
if memory consumption is a concern.
rocksportrocker
2010-06-30 08:51:38