У меня есть строки, которые выглядят как это:Синтаксической строку, которая представляет собой список кортежей
"(8, 12.25), (13, 15), (16.75, 18.5)"
, и я хотел бы преобразовать каждый из них в структуру питона данных. Предпочтительно список (или кортеж) кортежей, содержащих пару значений поплавка.
Я мог бы сделать это с помощью eval("(8, 12.25), (13, 15), (16.75, 18.5)")
, который дает мне кортеж кортежей, но я не думаю, что наивная оценка внешней информации была бы разумным решением.
Итак, я подумал, как может выглядеть элегантное питоническое решение.
jfyi, это не может быть устойчивым к наличию одного кортеж в списке. Что делать, если вы ввели «(8, 12.25)» .Таким образом, вы получите только кортеж вместо кортежа в кортеже. Я считаю, что вы получите желаемый вложенный кортеж, если вход был «(8, 12.25), «(обратите внимание на конечную запятую). Но я не тестировал это, так как у меня нет установленного на этом компьютере python 2.6. – Tom
Хорошо поймать Тома. Я еще об этом не думал, и на самом деле это было бы проблемой в моя ситуация. Я собираюсь проверить это после разбора. Спасибо за головы. К сожалению, метод не доступен в python2.5, но в моем случае это нормально, поскольку я использую его в сценарии импорта данных движка приложения, а не в самом приложении. – tosh
+1: Не знал 'ast.literal_eval' раньше - и это так удобно! –