将一个列表的字符串转换为正确的列表python

时间:2014-02-12 17:58:28

标签: python string list

如何将此字符串作为列表转换为正确的列表?

mylist = "['KYS_Q5Aa8', 'KYS_Q5Aa9']"

我厌倦了,但这不是我所期待的:

print mylist.split()
["['KYS_Q5Aa8',", "'KYS_Q5Aa9']"]

我喜欢这样:

['KYS_Q5Aa8','KYS_Q5Aa9']

由于

2 个答案:

答案 0 :(得分:8)

使用literal_eval模块中的ast

>>> import ast
>>> ast.literal_eval("['KYS_Q5Aa8', 'KYS_Q5Aa9']")
['KYS_Q5Aa8', 'KYS_Q5Aa9']

eval不同,literal_eval可以安全地用于用户字符串或其他未知字符串源。它只会将字符串编译成基本的python数据结构 - 所有其他的都会失败。

或者,如果您的字符串就是这样(即,没有嵌入的逗号或在子引用字符串中解析的意思),您可以强制拆分以执行您想要的操作:

>>> mystring = "['KYS_Q5Aa8', 'KYS_Q5Aa9']"
>>> [e.strip("' ") for e in mystring.strip('[] ').split(',')]
['KYS_Q5Aa8', 'KYS_Q5Aa9']

答案 1 :(得分:2)

你可以使用json库,它比eval更有效。

import json
mylist = "['KYS_Q5Aa8', 'KYS_Q5Aa9']"
mylist = json.loads(mylist.replace("'",'\"'))