Ввод двумерного списка из консоли

В консоль через запятую вводятся символы в формате i K j, например:

1 -> 2, 2 ? 1;3, 3 <- 4, 4 V 5, 5 !

Концом такой строки всегда служит !. Надо записать это в двумерный список размера NxM, где N это количество команд (в примере выше это 5 операций), M равно 3, где первая ячейка это число, вторая символ либо набор символов, третья число. Пример выходной матрицы:

1    2    3    4    5
->   ?    <-   V    !
2   1;3   4    5

Можно использовать сторонние библиотеки.

Как реализовать такое разбиение строки на массив?


Ответы (1 шт):

Автор решения: MaxU
import re

def parse_str(data_str):
    res = []
    for x in re.split(",\s*", data_str):
        tmp = x.split()
        res.append(tmp if len(tmp) == 3 else tmp + [""])
    return res

data_str = """1 -> 2, 2 ? 1;3, 3 <- 4, 4 V 5, 5 !"""
res = list(map(list, zip(*parse_str(data_str))))

результат:

In [72]: res
Out[72]:
[['1', '2', '3', '4', '5'],
 ['->', '?', '<-', 'V', '!'],
 ['2', '1;3', '4', '5', '']]
→ Ссылка