如何转换此列表:
list = [u"[u'book1', u'book2', u'book3']"]into this list:
为:
[u'book1', u'book2', u'book3']
我试过了:
n = ast.literal_eval(list)
但我收到了这个错误:
ValueError:格式错误的字符串
如果没有" u"?
,我还能做些什么才能更改此列表答案 0 :(得分:3)
ast.literal_eval
将节点或字符串作为参数。
列表既不是。示例列表中的第一个值是字符串,
你可以通过:
alist = [u"[u'book1', u'book2', u'book3']"]
ast.literal_eval(alist[0])
# produces: ['book1', 'book2', 'book3']
答案 1 :(得分:0)
如果您知道列表的数据是安全的,则可以使用eval()
:
>>> a = [u"[u'book1', u'book2', u'book3']"]
>>> eval(a[0])
['book1', 'book2', 'book3']
否则,最安全的选择是使用literal_eval
模块中的ast
:
>>> from ast import literal_eval
>>> literal_eval(a[0])
['book1', 'book2', 'book3']
答案 2 :(得分:0)
您收到malformed string
因为literal_eval
期待一个字符串,但您传递的是一个列表。看看最外层的分隔符。对于字符串,它们应该是匹配的引号,但是你有方括号。
>>> mylist = [u"[u'book1', u'book2', u'book3']"]
>>> ast.literal_eval(mylist.pop())
[u'book1', u'book2', u'book3'] # in Python 2
['book1', 'book2', 'book3'] # in Python 3