开发者

Python - String to list

I need cast a list to a string and get back the string to a list. There's a python way to make t开发者_运维百科his behavior?

l1 = ['aa','bb','cc']
s = str(l1)
l2 = cast_string_to_list(s)
print l2
"['aa','bb','cc']"


Use a serialization library like json:

import json

l1 = ['aa','bb','cc']
s = json.dumps(l1)
l2 = json.loads(s)

print s
print l1 == l2


In somewhat recent Python versions, you can use ast.literal_eval, which is essentially eval without the security problems. You could also try to do the parsing yourself (or use Python's parser and then replicate the logic of literal_eval before evaling the AST), although both are wheel reinventions and the latter is likely much less robust as soon as it gets to string literals.

Why do you need it anyway? There are serialization formats that can handle conversion to and from string of various data structures (not just lists of strings) for you, such as Pickle (somewhat insecure itself, read the notice in the docs), JSON, YAML, and probably more. They're much more robust and appropriate for such tasks.


You can use ast module:

import ast

l1 = ['aa','bb','cc']
s = str(l1)
ast.literal_eval(s)
>>> ['aa','bb','cc']

Or something like this - but i don't like it too much:

l1 = ['aa','bb','cc']
s = str(l1)
l2 = [x.strip(" '") for x in s.strip('[]').split(',')]


The pickle module is probably what you're looking for:

import pickle
l1 = ['aa','bb','cc']
s = pickle.dumps(l1)
l2 = pickle.loads(s)
print l2


If you are always working with a list, then the following kind of thing should work just fine. Beware, it will not cast ints to ints and such; they will always be string items in the list.

l1 = ['aa','bb','cc']
s = str(l1)

l2 = s[1:-1].split(',')

print l2
['aa', 'bb', 'cc']

You probably want to check the boundaries of the string and such to check that it's long enough for that array stuff too...

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜