将整数列表形式的python字符串转换为适当的整数列表

将整数列表形式的python字符串转换为适当的整数列表,python,Python,我有一个字符串作为[u'[15]]。我需要一个带int的列表,即[15] 我尝试了ast.literal\u eval() 但它给出了错误 ValueError: malformed string 如何修复它?您有一个包含unicode字符串的列表,您需要访问列表中的元素并调用literal\u eval: from ast import literal_eval print literal_eval([u'[15]'][0]) [15] 试图将列表传递给literal_eval(而不是其

我有一个字符串作为
[u'[15]]
。我需要一个带int的列表,即
[15]
我尝试了
ast.literal\u eval()
但它给出了错误

ValueError: malformed string
如何修复它?

您有一个包含unicode字符串的列表,您需要访问列表中的元素并调用literal\u eval:

from ast import literal_eval

print literal_eval([u'[15]'][0])
[15]
试图将列表传递给literal_eval(而不是其中的字符串)时出错

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 
[2]中的
literal_eval(literal_eval([u'[15]'))
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在()
---->1字面值(字面值([u'[15]']))
/文本值中的usr/lib/python2.7/ast.pyc(节点或字符串)
78返回左-右
79 raise VALUERROR('格式错误的字符串')
--->80返回\u转换(节点\u或字符串)
81
82
/usr/lib/python2.7/ast.pyc in_convert(节点)
77.其他:
78返回左-右
--->79 raise VALUERROR('格式错误的字符串')
80返回\u转换(节点\u或字符串)
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
>>> a = [u'[15]']
>>> import ast
>>> for i in a:
...     ast.literal_eval(i)
...
[15]
似乎您有一个列表,而不是字符串,如果有,您可以迭代列表,然后将元素传递给ast.literal\u eval,以获取元素。范例-

>>> 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
>>> 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'>
>x=ast.literal\u eval(a[0])
>>>x
[15]
>>>类型(x)

这看起来像一个列表,您确定没有列表吗?当我打印类型(值)时。其中value=[u'[15]']哦,我理解我应该做ast.literal_eval(value[0])的问题。是吗?@user77005,是的,您不能在列表上调用literal_eval。对于您拥有的最后一个代码段,类型(x)是什么?它是列表。在回答时补充了这一点。