我有一个字符串 [u'[15]']
,我需要将其转换为整数列表,即 [15]
。我尝试了使用 ast.literal_eval()
,但它报错。
ValueError: malformed string
如何解决这个问题?
我有一个字符串 [u'[15]']
,我需要将其转换为整数列表,即 [15]
。我尝试了使用 ast.literal_eval()
,但它报错。
ValueError: malformed string
您有一个包含Unicode字符串的列表,您需要访问列表中的元素并对其调用literal_eval:
from ast import literal_eval
print literal_eval([u'[15]'][0])
[15]
In [2]: literal_eval(literal_eval([u'[15]']))
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-2-7468abfb5acf> in <module>()
----> 1 literal_eval(literal_eval([u'[15]']))
/usr/lib/python2.7/ast.pyc in literal_eval(node_or_string)
78 return left - right
79 raise ValueError('malformed string')
---> 80 return _convert(node_or_string)
81
82
/usr/lib/python2.7/ast.pyc in _convert(node)
77 else:
78 return left - right
---> 79 raise ValueError('malformed string')
80 return _convert(node_or_string)
81
当我传递列表时,我遇到了您的错误,例如 -
>>> a = [u'[15]']
>>> ast.literal_eval(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.6/ast.py", line 68, in literal_eval
return _convert(node_or_string)
File "/usr/lib64/python2.6/ast.py", line 67, in _convert
raise ValueError('malformed string')
ValueError: malformed string
"[u'[15]']"
这样的字符串,我不会收到任何错误提示。>>> a = "[u'[15]']"
>>> ast.literal_eval(a)
[u'[15]']
看起来你有一个列表,而不是一个字符串,如果是这样的话,你可以遍历列表,然后将元素传递给 ast.literal_eval 函数,以获取你的元素。例如 -
>>> a = [u'[15]']
>>> import ast
>>> for i in a:
... ast.literal_eval(i)
...
[15]
>>> x = ast.literal_eval(a[0])
>>> x
[15]
>>> type(x)
<type 'list'>