Это мой первый вопрос о StackOverflow, поэтому предложения о том, как сделать этот вопрос яснее, всегда приветствуются.Преобразование строки в кортеж с использованием petl
У меня есть CSV точечных данных структурированы, как показано ниже:
OBJECTID,CART_ID,SHAPE
1,ABC,"(1.2, -4.5)"
2,ABD,"(3.8, 9.1)"
Использование модуля petl в Python 3.5, я пытаюсь преобразовать строку SHAPE в двух отдельных столбцах объектов с плавающей точкой. Используя то, что я понял из документации petl, я должен сделать это в три этапа.
- Открыть CSV:
a = petl.fromcsv('file.csv')
- Преобразовать SHAPE из строки в виде кортежа:
b = petl.convert(a, 'SHAPE', tuple)
- Split кортеж на две колонки с помощью .unpack():
c = petl.unpack(b, 'SHAPE', ['LAT', 'LON']
Я полагал, что это будет приводят к CSV-файлу, который выглядит следующим образом:
OBJECTID,CART_ID,LAT,LON
1,ABC,1.2,-4.5
2,ABD,3.8,9.1
Вместо .convert() производит:
OBJECTID,CART_ID,SHAPE
1,ABC,('(', '1', '.', '2', ',', ' ', '-', '4', '.', '5', ')')
Любая помощь на), что .convert() делает, или б) как реструктурировать CSV будут оценены.
спасибо.
Полный код:
import petl
a = petl.fromcsv('file.csv')
petl.look(a)
b = petl.convert(a, 'SHAPE', tuple)
petl.look(b)
c = petl.unpack(b, 'SHAPE', ['LAT', 'LON']
petl.look(c)
'ast.literal_eval' бы сделать меньше зла :П –