import re
def iterative(s):
stack = ['']
for token in re.findall(r'[,\[\]]|.+?', s):
if token == '[':
stack.append('')
elif token == ']':
if stack[-1]:
yield '.'.join(stack)
stack.pop()
stack[-1] = ''
elif token == ',':
if stack[-1]:
yield '.'.join(stack)
else:
stack[-1] = token
if stack and stack[0]:
yield ''.join(stack)
s = 'a,b,c[a,b,c[a]],d'
print(list(iterative(s)))
aW1wb3J0IHJlCmRlZiBpdGVyYXRpdmUocyk6CiAgICBzdGFjayA9IFsnJ10KICAgIGZvciB0b2tlbiBpbiByZS5maW5kYWxsKHInWyxcW1xdXXwuKz8nLCBzKToKICAgICAgICBpZiB0b2tlbiA9PSAnWyc6CiAgICAgICAgICAgIHN0YWNrLmFwcGVuZCgnJykKICAgICAgICBlbGlmIHRva2VuID09ICddJzoKICAgICAgICAgICAgaWYgc3RhY2tbLTFdOgogICAgICAgICAgICAgICAgeWllbGQgJy4nLmpvaW4oc3RhY2spCiAgICAgICAgICAgIHN0YWNrLnBvcCgpCiAgICAgICAgICAgIHN0YWNrWy0xXSA9ICcnCiAgICAgICAgZWxpZiB0b2tlbiA9PSAnLCc6CiAgICAgICAgICAgIGlmIHN0YWNrWy0xXToKICAgICAgICAgICAgICAgIHlpZWxkICcuJy5qb2luKHN0YWNrKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHN0YWNrWy0xXSA9IHRva2VuCiAgICBpZiBzdGFjayBhbmQgc3RhY2tbMF06CiAgICAgICAgeWllbGQgJycuam9pbihzdGFjaykKCgpzID0gJ2EsYixjW2EsYixjW2FdXSxkJwpwcmludChsaXN0KGl0ZXJhdGl2ZShzKSkp