def flatten(it):
    return chain.from_iterable([x] if isinstance(x, str) else x for x in lst)

def clean(it):
    return (x.rsplit('[', 1)[0] for x in it)
result = list(clean(flatten(lst)))
Search a list of nested tuples of strings in python