преобразование строки в список кортежей - PullRequest
4 голосов
/ 13 декабря 2011

Мне нужно преобразовать строку, '(2,3,4),(1,6,7)' в список кортежей [(2,3,4),(1,6,7)] в Python. Я думал разбить на каждый ',', а затем использовать цикл for и добавить каждый кортеж в пустой список. Но я не совсем уверен, как это сделать. Намек кто-нибудь?

Ответы [ 3 ]

8 голосов
/ 13 декабря 2011
>>> list(ast.literal_eval('(2,3,4),(1,6,7)'))
[(2, 3, 4), (1, 6, 7)]
2 голосов
/ 13 декабря 2011

Без Аст или Эвала:

def convert(in_str):
    result = []
    current_tuple = []
    for token in result.split(","):
        number = int(token.replace("(","").replace(")", ""))
        current_tuple.append(number)
        if ")" in token:
           result.append(tuple(current_tuple))
           current_tuple = []
    return result
2 голосов
/ 13 декабря 2011

Только для полноты: решение soulcheck, которое отвечает требованию оригинального плаката избегать ast.literal_eval:

def str2tupleList(s):
    return eval( "[%s]" % s )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...