3

可能重复:
将表示列表的字符串转换为实际的列表对象

有这样的字符串:

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

如何轻松将其解析为相应的列表?

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

是否有任何现有的功能可以做到这一点?

4

3 回答 3

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]
于 2012-12-18T20:37:44.483 回答
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]
于 2012-12-18T20:35:52.833 回答
0

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

于 2012-12-18T20:37:19.490 回答