在python中将input()转换为数组

时间:2017-06-27 07:14:10

标签: arrays python-3.x

我有input(),其中必须键入以下内容:

[[('Zamek', 2), ('Polonez', 7), ('Wojska Polskiego', 12), ('Słowiańska', 17), ('Solidarności', 21)], [('Zamek', 10), ('Polonez', 15), ('Wojska Polskiego', 21), ('Słowiańska', 24), ('Solidarności', 28)], [('Zamek', 17), ('Polonez', 22), ('Wojska Polskiego', 29), ('Słowiańska', 32), ('Solidarności', 36)], [('Zamek', 22), ('Polonez', 30), ('Wojska Polskiego', 37), ('Słowiańska', 40), ('Solidarności', 45)]]

和input()将其转换为字符串,但是我无法在此列表中工作。 我需要做什么来转换输入?

2 个答案:

答案 0 :(得分:1)

如果你知道输入安全(只有你提供),你可以使用 eval

l = eval(input("bring it on:"))

更好的版本 ast.literal_eval

l = ast.literal_eval(input("much safer:"))

在这两种情况下,您都需要确保输入不是来自不受信任的来源

如果您可以让您的输入成为json,那么您将获得更安全/更好的解决方案:

#possible input: [[["Zamek", 2], ["Polonez", 7], ["Wojska Polskiego", 12], ["S\\u0142owia\\u0144ska", 17], ["Solidarno\\u015bci", 21]], [["Zamek", 10], ["Polonez", 15], ["Wojska Polskiego", 21], ["S\\u0142owia\\u0144ska", 24], ["Solidarno\\u015bci", 28]], [["Zamek", 17], ["Polonez", 22], ["Wojska Polskiego", 29], ["S\\u0142owia\\u0144ska", 32], ["Solidarno\\u015bci", 36]], [["Zamek", 22], ["Polonez", 30], ["Wojska Polskiego", 37], ["S\\u0142owia\\u0144ska", 40], ["Solidarno\\u015bci", 45]]]
l = json.loads(input("please provide it in json format..."))

答案 1 :(得分:1)

危险版本:

data = input("Enter your list: ")
parsed_data = eval(data)