将看起来像列表的字符串转换为真正的列表-python

将看起来像列表的字符串转换为真正的列表-python,python,string,list,int,tuples,Python,String,List,Int,Tuples,我的输入文件有如下行: [(0, 1), (1, 3), (2, 1), (3, 1), (4, 1)] [(0, 1, 6), (1, 3,7), (3, 1,4), (3, 1,3), (8, 1,2)] [1,2,3,5,3] 元组中没有字母,没有小数,只有整数和元素数是一致的 如何将它们转换为真正的元组列表/int列表?Python自带电池-该问题可通过以下方式解决: @阿尔瓦斯:请注意,ast.literal\u eval是安全的,而eval不是。@StevenRumbalski为什

我的输入文件有如下行:

[(0, 1), (1, 3), (2, 1), (3, 1), (4, 1)]
[(0, 1, 6), (1, 3,7), (3, 1,4), (3, 1,3), (8, 1,2)]
[1,2,3,5,3]
元组中没有字母,没有小数,只有整数和元素数是一致的


如何将它们转换为真正的元组列表/int列表?

Python自带电池-该问题可通过以下方式解决:


@阿尔瓦斯:请注意,
ast.literal\u eval
是安全的,而
eval
不是。@StevenRumbalski为什么ast.literal\u eval和eval不安全?@jeppo1:您要计算的字符串通常来自不可信的源
eval
将运行任意代码。从第三方运行任意代码是一个安全漏洞
ast.literal_eval
,因为它只解释“字符串、字节、数字、元组、列表、dicts、set、boolean和None”而保留的插件。其他任何内容都是错误的。
>>> import ast
>>> ast.literal_eval("[(0, 1), (1, 3), (2, 1), (3, 1), (4, 1)]")
[(0, 1), (1, 3), (2, 1), (3, 1), (4, 1)]
>>> ast.literal_eval("[(0, 1, 6), (1, 3,7), (3, 1,4), (3, 1,3), (8, 1,2)]")
[(0, 1, 6), (1, 3, 7), (3, 1, 4), (3, 1, 3), (8, 1, 2)]
>>> ast.literal_eval("[1,2,3,5,3]")
[1, 2, 3, 5, 3]