Consejos para leer en un archivo complejo - Python

Tengo archivos de texto complejos y variables que quiero leer en Python, pero no estoy seguro de cuál sería la mejor estrategia. No estoy buscando que codifiques nada, solo algunos consejos sobre qué módulos se adaptarían mejor a mis necesidades / consejos, etc.

Los archivos se parecen a:

Program
Username: X    Laser: X     Em: X

exp 1
    sample 1
        Time: X    Notes: X
        Read 1 X data
        Read 2 X data
        # unknown number of reads
    sample 2
        Time: X    Notes: X
        Read 1 X data
        ...
    # Unknown number of samples

exp 2
    sample 1
    ...
# Unknown number of experiments, samples and reads
# The 4 spaces between certain words represent tabs

Para analizar estos datos, necesito obtener los datos para cada lectura y saber de qué muestra y experimento provino. Además, puedo cambiar el formato del archivo de salida, pero creo que la forma en que lo he escrito aquí es la más fácil de leer.

Para leer este archivo en Python, la mejor manera que se me ocurre sería leerlo fila por fila y buscar palabras clave con expresiones regulares. Por ejemplo, busque en la fila la palabra clave "exp" y luego registre el número después de ella, luego busque la muestra en la línea siguiente y así sucesivamente. Sin embargo, por supuesto, esto no funcionaría si se usara una palabra clave en la sección 'notas'.

Entonces, estoy un poco perplejo en cuanto a lo que mejor se adapte a mis necesidades (¡es difícil usar algo si no sabes que existe!)

Gracias por tu tiempo.