Вы можете сделать это, коснувшись каждого символа вашего path
ввода один раз + некоторый список компов:
path = "dir\tsubdir1\t\tfile1.ext\t\tsubsubdir1\tsubdir2\t\tsubsubdir2\t\t\tfile2.ext"
l = [[]]
for c in path:
if c != "\t": # append to last element of list if not a \t
l[-1].append(c)
elif l[-1][-1] == "\t": # also append to last element of list if it's last is a \t
l[-1].append(c) # (you could 'or' it into the if before)
else:
l.append([]) # else create a new "word" and append the \t
l[-1].append(c)
l = [''.join(elem) for elem in l] # join the things back together
print(l)
Вывод:
['dir',
'\tsubdir1',
'\t\tfile1.ext',
'\t\tsubsubdir1',
'\tsubdir2',
'\t\tsubsubdir2',
'\t\t\tfile2.ext']
Перед объединением-шаг накопленные списки выглядят следующим образом:
[['d', 'i', 'r'],
['\t', 's', 'u', 'b', 'd', 'i', 'r', '1'],
['\t', '\t', 'f', 'i', 'l', 'e', '1', '.', 'e', 'x', 't'],
['\t', '\t', 's', 'u', 'b', 's', 'u', 'b', 'd', 'i', 'r', '1'],
['\t', 's', 'u', 'b', 'd', 'i', 'r', '2'],
['\t', '\t', 's', 'u', 'b', 's', 'u', 'b', 'd', 'i', 'r', '2'],
['\t', '\t', '\t', 'f', 'i', 'l', 'e', '2', '.', 'e', 'x', 't']]
Вы не хотите добавлять в строки, потому что это создает много промежуточных «выбрасываемых» экземпляров строк, что замедляет их - список использования гораздо быстрее и меньшештамм.