我很难过:
我有一个列表,据说包含其他列表但是现在它们在python中被读为str:
YACKETY = [“['11111','3000','USD','0']”,“['11112','3000','USD','0']”,“['11113 ','3000','USD','0']“,”['11114','3000','USD','0']“]
但是YACKETY中的每个元素都应该是列表,现在它们就是字符串。我想让YACKETY中的每个元素再次成为可变列表。我怎么处理这个?
元组是不可变的,所以这不是解决方案,因为我希望YACKETY中那些列表中的元素是可变的。
答案 0 :(得分:3)
使用ast.literal_eval
安全地从字符串转换为列表。
>>> import ast
>>> YACKETY = ["['11111', '3000', 'USD', '0']", "['11112', '3000', 'USD', '0']", "['11113', '3000', 'USD', '0']", "['11114', '3000', 'USD', '0']"]
>>> converted = [ast.literal_eval(x) for x in YACKETY]
>>> converted
[['11111', '3000', 'USD', '0'], ['11112', '3000', 'USD', '0'], ['11113', '3000', 'USD', '0'], ['11114', '3000', 'USD', '0']]
答案 1 :(得分:0)
理想情况下,正确的方法是找出这些列表转换为字符串的位置并阻止其发生。 YACKETY中的每个元素都是传递给str()的列表。由于您不希望它们作为字符串,您可能想要弄清楚为什么这些列表被传递给str()并修复它。
如果您无法控制,那么总是有一个大红色按钮:
yacklist = [eval(item) for item in YACKETY]