EXTRACCION TABLAS EN UN ARCHIVO EN FORMATO MARKDOWN CON SEPARADOR DENTRO DE CAMPOS
Publicado por VITO (1 intervención) el 25/04/2024 12:53:14
Hola muy buenas, ¿Alguien me puede ayudar por favor??Tengo este codigo de python para extraer tablas que me funciona bien excepto cuando aparece el separador dentro de una celda que no hay que dividir, quiero una modificacion para que en los casos que aparezca un campo entre "```" (al principio y al final del campo aparece ```) coja ese campo entero sin importar que el separador "|" esté dentro. Es para extraer tablas en formato markdown que los campos están divididos unicamente por el separador "|"
def extraer_tablas_md(archivo_corregido, num_tablas=3)
patrón tabla = r'\|(.+?)\|\n\|(.+?)\|\n(?:\|[-:]+?\|\n)?((?:\|.+?\|\n)+)'
resultados_tabla = re.findall(patron_tabla, archivo_corregido, re.DOTALL)
dfs = []
for i, resultados in enumerate(resultados_tablas[:num_tablas]):
cabeceras = [cabecera.strip() for cabecera in resultado[0].strip().split('|') if cabecera.strip()]
filas = [[celda.strip() for celda in fila.strip().split('|') if celda.strip()] for fila in resultado[2].strip().split('\n') if fila.strip()]
df_tabla = pd.DataFrame(filas, columns = cabeceras)
dfs.append(df_tabla)
return dfs
archivo_corregido = 'DD.md'
#archivo_corregido = corregir_markdown(archivo)
try:
tablas_extraidas = extraer_tablas_md(archivo_corregido, num_tablas=3)
df_names = ['t1', 't2', 't3']
named_dataframes = {name: df for name, df in zip(df_names, tablas_extraidas)}
tabla1 = named_dataframes['t1']
tabla2 = named_dataframes['t2']
tabla3= named_dataframes['t3']
except Exception as e:
print(f"Error: {str(e)}")
print(tabla1)
print(tabla2)
print(tabla3)
GRACIAS AMIG@S
def extraer_tablas_md(archivo_corregido, num_tablas=3)
patrón tabla = r'\|(.+?)\|\n\|(.+?)\|\n(?:\|[-:]+?\|\n)?((?:\|.+?\|\n)+)'
resultados_tabla = re.findall(patron_tabla, archivo_corregido, re.DOTALL)
dfs = []
for i, resultados in enumerate(resultados_tablas[:num_tablas]):
cabeceras = [cabecera.strip() for cabecera in resultado[0].strip().split('|') if cabecera.strip()]
filas = [[celda.strip() for celda in fila.strip().split('|') if celda.strip()] for fila in resultado[2].strip().split('\n') if fila.strip()]
df_tabla = pd.DataFrame(filas, columns = cabeceras)
dfs.append(df_tabla)
return dfs
archivo_corregido = 'DD.md'
#archivo_corregido = corregir_markdown(archivo)
try:
tablas_extraidas = extraer_tablas_md(archivo_corregido, num_tablas=3)
df_names = ['t1', 't2', 't3']
named_dataframes = {name: df for name, df in zip(df_names, tablas_extraidas)}
tabla1 = named_dataframes['t1']
tabla2 = named_dataframes['t2']
tabla3= named_dataframes['t3']
except Exception as e:
print(f"Error: {str(e)}")
print(tabla1)
print(tabla2)
print(tabla3)
GRACIAS AMIG@S
Valora esta pregunta
0