Python: как получить имя, показывающее иерархию из данного файла?
Я новичок в Python, и я пытаюсь провести анализ данных с его помощью. У меня есть текстовый файл, который выглядит так:
Одним словом, я хочу получить имя, которое показывает иерархию. Например, top1_c_a следует называть как 'top1 / top1_c/top_c_a'. Наконец, я хочу получить список, содержащий эти имена. Что мне делать?1 ответ
Вы можете группировать строки файла на основе глубины отступа с помощью рекурсии:
import re
with open('hierarchy_data.txt') as f:
d = [(j:=(k[0] if (k:=re.findall('^\s+', i)) else ''), i[len(j):].strip('\n')) for i in f]
def full_paths(d, p = []):
if not d:
yield '/'.join(p)
else:
k, r = None, []
for a, b in d:
if not a:
if k is not None:
yield from full_paths(r, p+[k])
k, r = b, []
else:
r.append((a[2:], b))
if k is not None:
yield from full_paths(r, p+[k])
print(list(full_paths(d)))
Выход:
['top1/top1_a', 'top1/top1_b', 'top1/top1_c/top1_c_a/top1_c_a_a', 'top1/top1_c/top1_c_a/top1_c_a_b', 'top1/top1_d', 'top2/top2_a', 'top2/top2_b/top2_b_a']