list .__ str__逆转

时间:2012-12-18 20:34:28

标签: python python-3.x

  

可能重复:
  Converting a string that represents a list, into an actual list object

有这样的字符串:

"[81, 102, 114, 132, 194, 210, 228, 317, 357, 358, 379, 396, 407, 417, 418, 420, 470, 471, 506, 526, 533, 538]"

如何轻松地将其解析到相应的列表中?

我知道我可以使用re模块或按", "分割等。

有没有现成的功能呢?

3 个答案:

答案 0 :(得分:5)

使用ast.literal_eval()

>>> import ast
>>> s = "[81, 102, 114, 132, 194, 210, 228, 317, 357, 358, 379, 396, 407, 417, 418, 420, 470, 471, 506, 526, 533, 538]"
>>> ast.literal_eval(s)
[81, 102, 114, 132, 194, 210, 228, 317, 357, 358, 379, 396, 407, 417, 418, 420, 470, 471, 506, 526, 533, 538]

答案 1 :(得分:1)

>>> l = "[81, 102, 114, 132]"
>>> map(int, l.strip("[]").split(", "))
[81, 102, 114, 132]

对于Python 3+,您需要从map迭代器:

创建列表
>>> l = "[81, 102, 114, 132]"
>>> list(map(int, l.strip("[]").split(", ")))
[81, 102, 114, 132]

答案 2 :(得分:0)

最直接的方法是使用eval()。但这通常被认为是不好的做法,因为它可能导致安全问题。