Преобразовать str в list без изменений
Я получаю такую строку l = ['3:2', '1:1', '2:1'], как мне из неё сделать список?
Пытался сделать так: list(l), но она разбивает каждый символ:
['[', "'", '3', ':', '2', "'", ',', ' ', "'", '1', ':', '1', "'", ',', ' ', "'", '2', ':', '1', "'", ']']
Ответы (2 шт):
eval(l)
Но с eval надо быть осторожным, можно неприятные вещи словить.
Это очень мощная, но в то же время и очень опасная инструкция, особенно если строки, которые вы передаёте в eval, получены не из доверенного источника. Что будет, если строкой, которую мы решим скормить eval'у, окажется os.system('rm -rf /')?
Более безопасной опцией будет ast ответ на английском stackoverflow.
import ast
l = "['3:2', '1:1', '2:1']"
ast.literal_eval(l)
Вывод:
['3:2', '1:1', '2:1']
import re
l = "['3:2', '1:1', '2:1']"
answer = re.findall(r"\d+:\d+", l)
#answer = ['3:2', '1:1', '2:1']
answer1 = [[int(x[0]), int(x[-1])] for x in re.findall(r"\d+:\d+", l)]
#answer1 = [[3, 2], [1, 1], [2, 1]]
Не совсем понял что ты хочешь получить, но из этого думаю без проблем сделаешь как тебе нужно