Agregadas funciones para porcesar al archivo master_export2translate
This commit is contained in:
parent
f86df8f09a
commit
fbea5a01b5
Binary file not shown.
|
@ -0,0 +1,68 @@
|
||||||
|
import pandas as pd
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
import logging
|
||||||
|
from manejoArchivos import select_file
|
||||||
|
|
||||||
|
def configurar_logger(ruta_log):
|
||||||
|
logger = logging.getLogger('importacion_logger')
|
||||||
|
logger.setLevel(logging.INFO)
|
||||||
|
fh = logging.FileHandler(ruta_log, encoding='utf-8')
|
||||||
|
fh.setLevel(logging.INFO)
|
||||||
|
formatter = logging.Formatter('%(asctime)s - %(message)s')
|
||||||
|
fh.setFormatter(formatter)
|
||||||
|
logger.addHandler(fh)
|
||||||
|
return logger
|
||||||
|
|
||||||
|
def revertir_transformaciones(texto, digitos, secciones):
|
||||||
|
# Revertir <> a [[digits]]
|
||||||
|
for digito in digitos:
|
||||||
|
texto = texto.replace('<>', digito, 1)
|
||||||
|
# Revertir <#> a <...> usando las secciones originales
|
||||||
|
for seccion in secciones:
|
||||||
|
texto = texto.replace('<#>', f'<{seccion}>', 1)
|
||||||
|
return texto
|
||||||
|
|
||||||
|
def importar_traduccion(archivo_maestro, archivo_traduccion):
|
||||||
|
if not os.path.exists(archivo_maestro):
|
||||||
|
print("El archivo maestro no existe.")
|
||||||
|
return
|
||||||
|
|
||||||
|
df_maestro = pd.read_excel(archivo_maestro)
|
||||||
|
df_traduccion = pd.read_excel(archivo_traduccion)
|
||||||
|
|
||||||
|
# Configurar el logger
|
||||||
|
directorio = os.path.dirname(archivo_maestro)
|
||||||
|
nombre_log = os.path.join(directorio, 'importacion_traduccion.log')
|
||||||
|
logger = configurar_logger(nombre_log)
|
||||||
|
|
||||||
|
# Iterar sobre las filas del archivo de traducción para revertir transformaciones y actualizar el maestro
|
||||||
|
for index, fila in df_traduccion.iterrows():
|
||||||
|
clave = fila[df_maestro.columns[0]]
|
||||||
|
if clave in df_maestro[df_maestro.columns[0]].values:
|
||||||
|
# Obtener los dígitos y secciones originales de la clave
|
||||||
|
digitos = re.findall(r'\d+', str(clave))
|
||||||
|
secciones = re.findall(r'<(.*?)>', str(clave))
|
||||||
|
|
||||||
|
# Actualizar solo las columnas que existen en df_maestro y df_traduccion
|
||||||
|
for columna in df_traduccion.columns[1:]:
|
||||||
|
if columna in df_maestro.columns:
|
||||||
|
valor_traducido = fila[columna]
|
||||||
|
if pd.isnull(valor_traducido):
|
||||||
|
continue # Omitir celdas vacías
|
||||||
|
valor_original = df_maestro.loc[df_maestro[df_maestro.columns[0]] == clave, columna].values[0]
|
||||||
|
valor_revertido = revertir_transformaciones(valor_traducido, digitos, secciones)
|
||||||
|
|
||||||
|
if pd.notnull(valor_original) and str(valor_original) != valor_revertido:
|
||||||
|
df_maestro.loc[df_maestro[df_maestro.columns[0]] == clave, columna] = valor_revertido
|
||||||
|
logger.info(f'Fila {index}, Columna {columna}: "{valor_original}" actualizado a "{valor_revertido}"')
|
||||||
|
|
||||||
|
# Guardar el archivo maestro actualizado
|
||||||
|
df_maestro.to_excel(archivo_maestro, index=False)
|
||||||
|
print(f"Traducciones importadas y archivo maestro actualizado: {archivo_maestro}. Detalles de los cambios en {nombre_log}")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
archivo_maestro = "hmi_master_translates.xlsx"
|
||||||
|
archivo_traduccion = "master_export2translate.xlsx"
|
||||||
|
importar_traduccion(archivo_maestro, archivo_traduccion)
|
|
@ -0,0 +1,37 @@
|
||||||
|
import pandas as pd
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
from manejoArchivos import select_file
|
||||||
|
|
||||||
|
def transformar_texto(texto):
|
||||||
|
# Sustituir [[digits]] por <>
|
||||||
|
texto_transformado = re.sub(r'\[\[digits\]\]', '<>', texto)
|
||||||
|
# Sustituir cualquier <...> por <#>
|
||||||
|
texto_transformado = re.sub(r'<.*?>', '<#>', texto_transformado)
|
||||||
|
return texto_transformado
|
||||||
|
|
||||||
|
def exportar_para_traduccion(archivo_maestro):
|
||||||
|
if not os.path.exists(archivo_maestro):
|
||||||
|
print("El archivo maestro no existe.")
|
||||||
|
return
|
||||||
|
|
||||||
|
df_maestro = pd.read_excel(archivo_maestro)
|
||||||
|
|
||||||
|
# Crear un nuevo DataFrame para la exportación
|
||||||
|
df_export = pd.DataFrame()
|
||||||
|
|
||||||
|
# Copiar la primera columna tal cual
|
||||||
|
df_export[df_maestro.columns[0]] = df_maestro[df_maestro.columns[0]]
|
||||||
|
|
||||||
|
# Transformar las demás columnas
|
||||||
|
for columna in df_maestro.columns[1:]:
|
||||||
|
df_export[columna] = df_maestro[columna].apply(lambda x: transformar_texto(str(x)) if pd.notnull(x) else x)
|
||||||
|
|
||||||
|
# Guardar el archivo exportado
|
||||||
|
ruta_export = os.path.join(os.path.dirname(archivo_maestro), 'master_export2translate.xlsx')
|
||||||
|
df_export.to_excel(ruta_export, index=False)
|
||||||
|
print(f"Archivo exportado para traducción: {ruta_export}")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
archivo_maestro = "hmi_master_translates.xlsx"
|
||||||
|
exportar_para_traduccion(archivo_maestro)
|
Binary file not shown.
Loading…
Reference in New Issue