- Сначала , вам необходимо преобразовать каждый элемент в представление примера списка:
'["a", "c", "e"]'
. Для этого: вы должны использовать regex
:
import re
s = '[[a, c], [a, b], d]'
s = re.sub(r'(?<![\]\[]),', '",', re.sub(r',(?![\]\[])',',"',re.sub(r'\s*,\s*', ',', re.sub(r'(?<!\])\]', '"]',re.sub(r'\[(?!\[)', '["', s))))
Наконец, , процесс сглаживания может быть описан рекурсивным алгоритмом:
def flat(x):
if not any(isinstance(t, list) == True for t in x):
return x
xx = []
for item in x:
if isinstance(item, str):
for j in range(len(xx)):
xx[j].append(item)
else:
item_new = flat(item)
if any(isinstance(t, list) == True for t in item_new):
xx.extend(item_new)
else:
xx.append(item_new)
return xx