[英]convert a string which is a list into a proper list python
如何将这个列表字符串转换为正确的列表?
mylist = "['KYS_Q5Aa8', 'KYS_Q5Aa9']"
我累了,但这不是我所期望的:
print mylist.split()
["['KYS_Q5Aa8',", "'KYS_Q5Aa9']"]
我想要这样:
['KYS_Q5Aa8','KYS_Q5Aa9']
使用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']
您可以使用 json 库,它比 eval 更有效。
import json
mylist = "['KYS_Q5Aa8', 'KYS_Q5Aa9']"
mylist = json.loads(mylist.replace("'",'\"'))
Json 模块会为您评估这一点
import json
mylist = '["KYS_Q5Aa8", "KYS_Q5Aa9"]'
arr = json.loads(mylist)
print(arr)
# ['KYS_Q5Aa8', 'KYS_Q5Aa9']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.