Погодите. Я правильно понял, вы список аргументов собираете в строку, чтобы её потом парсить регуляркой?
Но зачем?
Что мешает проверить элементы списка на соответствие паттернам без join?
Приведите примеры строк аргументов, которые ждёте на входе и на выходах.
Идея простая: берёшь цифры, буквы, знаки препинания и не забудь пробелы. Расставляешь, как считаешь нужным, читаешь сообщения об ошибках и устраняешь ошибки. Готово!
ZIK1337, Я думаю, есть много готовых вариантов, библиотек для работы с подобными вложенными массивами, с готовыми методами и документацией. Сам не изучал тщательно, но вроде как в numpy довольно неплохо с работой с многомерными массивами...
Ну или писать свой велосипедик типа многомерного дерева с механизмами обходов, проверки наличия веток и при необходимости создания веток и удаления оных. Для тренировки было бы полезно, для дела наверно лучше все-таки готовые решения поискать. Вполне возможно, всё, что нужно, уже есть в python или каком-нибудь фреймворке типа джанги, если внимательно почитать документацию и правильно спроектировать программу...