2014-02-16 4 views
0

Я пытаюсь преобразовать строку, которая выглядит как это в массив кортежейКак преобразовать это в массив?

"[(1,2), (2,3), (4,5)]" ->[(1,2), (2,3), (4,5)]

Вот тело кода, который я хотел бы, чтобы заполнить:

def convert_to_polygon(polygon_string): 

    return polygon_array 

Должен ли я использовать библиотеку python? Существует ли для этой работы?

+4

Кортежи имеют '()' и списки имеют '[]'. Тот, который вы показали, называется set '{}'. Итак, пожалуйста, уточните, что именно вы пытаетесь сделать и что вы действительно хотите. – thefourtheye

+0

Итак, я хочу иметь возможность сделать это: polygon_array [x] [0], где x - проиндексированная пара, а [0] - первая из этой пары. Я бы использовал кортеж, список или набор? Я новичок в этом. – user3043594

ответ

4

Вы можете использовать ast.literal_eval:

>>> import ast 
>>> s = '{{1,2},{2,3},{4,5}}' 
>>> polygon_array = ast.literal_eval(s.replace('{', '(').replace('}', ')')) 
>>> polygon_array 
((1, 2), (2, 3), (4, 5)) 
>>> polygon_array[1][0] 
2 

Используйте list(polygon_array), если вы хотите получить список кортежей.

1
>>> def convert_to_polygon(polygon_string): 
...  return eval(polygon_string) 
... 
>>> polygon_string = "[(1,2), (2,3), (4,5)]" 
>>> convert_to_polygon(polygon_string) 
[(1, 2), (2, 3), (4, 5)] 
Смежные вопросы