在python/djang中如何从unicode列表转换为普通列表

2024-05-08 11:30:33 发布

您现在位置:Python中文网/ 问答频道 /正文

如何转换此列表:

list = [u"[u'book1', u'book2', u'book3']"]into this list:

收件人:

^{pr2}$

我试过了:

n = ast.literal_eval(list)

但我有个错误:

ValueError: malformed string

如果没有“u”,我还能做些什么来更改这个列表?在


Tags: 列表错误evalthisast收件人listvalueerror
3条回答

ast.literal_eval将节点或字符串作为参数。 单子不是。示例列表中的第一个值是字符串, 你可以通过:

alist = [u"[u'book1', u'book2', u'book3']"]
ast.literal_eval(alist[0])
# produces: ['book1', 'book2', 'book3']

您得到的是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

如果您知道列表的数据是安全的,可以使用eval()

>>> a = [u"[u'book1', u'book2', u'book3']"]
>>> eval(a[0])
['book1', 'book2', 'book3']

否则,最安全的选择是使用literal_eval来自ast模块的literal_eval

^{pr2}$

相关问题 更多 >

    热门问题