literal_eval returns 给定不带引号的字符串的格式错误的字符串

literal_eval returns malformed string given a string without quote

我尝试使用 literal_eval 转换包含两个列表的字符串,如下所示。

from ast import literal_eval
literal_eval('[[ba], [38]]')

但是我得到了这个错误

raise ValueError('malformed string')

难道是因为'ba'没有转成字符串?我该如何解决这个问题?

这是因为这不是一组有效的 Python 文字,您要求它评估。字符串需要加引号,像这样:

from ast import literal_eval
literal_eval('[["ba"], [38]]')

那么你会得到正确的结果:

[['ba'], [38]]