совпадение регулярного выражения со словом и соединение с совпавшим - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть проблема, которую я долго не мог найти решение. Я предполагаю, что лучший подход - через re, но я открыт для любых предложений.

У меня есть текст ниже в списке, который я записал в текстовый файл для импорта другой программой для некоторых вычислений.

Проблема в том, что мне нужно включить совпавшую строку (т. Е. [] S = 0) с похожими [] s = 0, например: [] s = 0 -> p01: (s '= 1) + P02: (S'= 2). Таким образом, первые две строки должны быть объединены оператором +, а также следующие третья и четвертая строки и т. Д.

module main
[]s=0 -> p01:(s'=1);
[]s=0 -> p02:(s'=2);
[]s=1 -> p10:(s'=0);
[]s=1 -> p12:(s'=2);
[]s=2 -> p20:(s'=0);
[]s=2 -> p23:(s'=3);
[]s=3 -> p34:(s'=4);
[]s=4 -> p40:(s'=0);
[]s=4 -> p45:(s'=5);
[]s=4 -> p46:(s'=6);
[]s=5 -> p57:(s'=7);
[]s=6 -> p67:(s'=7);
[]s=7 -> p70:(s'=0);
endmodule

1 Ответ

1 голос
/ 17 апреля 2020

Предполагается, что у вас есть данные в виде строк?

data = ["[]s=0 -> p01:(s'=1);",
"[]s=0 -> p02:(s'=2);",
"[]s=1 -> p10:(s'=0);",
"[]s=1 -> p12:(s'=2);",
"[]s=2 -> p20:(s'=0);",
"[]s=2 -> p23:(s'=3);",
"[]s=3 -> p34:(s'=4);",
"[]s=4 -> p40:(s'=0);",
"[]s=4 -> p45:(s'=5);",
"[]s=4 -> p46:(s'=6);",
"[]s=5 -> p57:(s'=7);",
"[]s=6 -> p67:(s'=7);",
"[]s=7 -> p70:(s'=0);"]

dict_ = {}
for item in data:
    split = (item.split("=")[1].split(" ")[0])
    if not split in dict_:
        dict_[split] = item
    else:
        dict_[split] = dict_[split] + " + " + item

for key, value in dict_.items() :
    print (key, value)
...