Script de Python que elimina tabuladores y cambia la cabecera de ficheros "_bindenergy.tab".


La ejecución del macro "md_analyzebindenergy.mcr" de YASARA genera ficheros de texto con extensión *.tab que separan el contenido de sus columnas por espacios en blanco. Véase un ejemplo justo debajo.

tabuladores

Con el siguiente script de Python, para ejecutar en Windows, eliminamos "_" y sustituimos los espacios en blanco (1 o más) por tabuladores. Los ficheros de salida tienen el mismo nombre que los de entrada. Los nuevos ficheros son fáciles de copiar y pegar sobre una hoja de cálculo.

import os
import re

# Ruta donde buscar los archivos *.tab
ruta = r"D:\zzz"

# Cadena original y nueva para la primera sustitución
cadena_original = " ____Time[ps]__BindEnergy=  EpotRecept+ EsolvRecept+  EpotLigand+ EsolvLigand- EpotComplex- EsolvComplex ______VINALS [kcal/mol]"
cadena_nueva    = "     Time[ps]  BindEnergy=  EpotRecept+ EsolvRecept+  EpotLigand+ EsolvLigand- EpotComplex- EsolvComplex       VINALS"

# Procesa todos los archivos .tab en la ruta
for nombre_archivo in os.listdir(ruta):
    if nombre_archivo.endswith(".tab"):
        ruta_completa = os.path.join(ruta, nombre_archivo)

        # Lee el contenido del archivo
        with open(ruta_completa, 'r', encoding='utf-8') as archivo:
            contenido = archivo.read()

        # Primera sustitución: cambia la cadena específica
        contenido = contenido.replace(cadena_original, cadena_nueva)

        # Segunda sustitución: reemplaza múltiples espacios por un tabulador
        # Línea por línea para evitar tabuladores donde no se necesitan (como en líneas vacías)
        lineas_procesadas = []
        for linea in contenido.splitlines():
            # Quita espacios al inicio y al final, luego reemplaza espacios múltiples internos
            linea_tabulada = re.sub(r' {1,}', '\t', linea.strip())
            lineas_procesadas.append(linea_tabulada)

        # Junta todo el contenido modificado
        nuevo_contenido = '\n'.join(lineas_procesadas)

        # Guarda el nuevo contenido en el mismo archivo
        with open(ruta_completa, 'w', encoding='utf-8') as archivo:
            archivo.write(nuevo_contenido)

print("Proceso completado: cadena sustituida y columnas tabuladas.")

tabuladores