Я хочу преобразовать список строк в их правильные типы (т. Е. Int, float, boolean и т. Д.) В одну строку и распаковать значения.Преобразование списка строк в несколько типов данных в одной строке
Есть встроенный модуль, который может сделать это лучше, чем следующий ?:
strLst = ["a", "1.0", "2", "True"]
a, b, c, d = [[s[0], float(s[1]), int(s[2]), bool(s[3])] for s in [strLst]][0]
EDIT:
Я создаю, б, в, г из большого текстового файла и Я надеялся, что есть элегантный способ сделать конверсию на одной линии. Это вопрос не только для этого конкретного примера, но вопрос о модуле, который может сделать что-то вроде этого:
with open("file.txt") as f:
a, b, c, d = [[s[0], float(s[1]), int(s[2]), bool(s[3])] \
for s in [next(f)[:-1].split()]][0]
Основываясь на комментарий Никлас Нильсона, я мог бы сделать следующее:
a,b,c,d = [ast.literal_eval(s) for s in next(f)[:-1].split()]
Если бы у вас не было этого поплавка, я бы предложил '[ast.literal_eval (s) для s в strLst]' –
на самом деле это отлично на основе моего редактирования. –
Поплавок, кажется, работает отлично для меня в 2.7? –