es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Usted es un traductor de español que traduce documentos de TI. Traduzca lo siguiente al español. Reemplace cadena en párrafo manteniendo la biblioteca de estilo docx.

Estoy reemplazando las cadenas en tablas y párrafos de un documento de Word. Sin embargo, los estilos cambian. ¿Cómo puedo mantener el formato de estilo original?

with open(r"C:\Users\y.Israfilbayov\Desktop\testfiles\test_namedranges\VariableNames.json") as p:
                data = json.load(p)

documento = Document(r"C:\Users\y.Israfilbayov\Desktop\testfiles\test_namedranges_update\F10352-JB117-FMXXX Pile XXXX As-built Memo GAIA Auto trial_v6.docx")

for clave, valor in data.items():
    for párrafo in documento.paragraphs:
        if clave in párrafo.text:
            párrafo.text = párrafo.text.replace(str(clave), str(valor))
for clave, valor in data.items():
    for tabla in documento.tables:
        for fila in tabla.rows:
            for celda in fila.cells:
                for párrafo in celda.paragraphs:
                    if clave in párrafo.text:
                        párrafo.text = párrafo.text.replace(str(clave),str(valor))

Había una publicación similar, pero no me ayudó (tal vez hice algo mal).

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para mantener el formato de estilo original al reemplazar cadenas en tablas y párrafos de un documento de Word utilizando Python, puedes utilizar los atributos Paragraph._element y TableCell._element para acceder y modificar los elementos XML subyacentes.

    Antes de reemplazar la cadena, puedes guardar la información de estilo original utilizando paragraph.style._element o cell._element, y luego aplicarla nuevamente después de reemplazar la cadena. Por ejemplo:

    for key, value in data.items():
        for paragraph in document.paragraphs:
            if key in paragraph.text:
                # guardar la información de estilo original
                original_style = paragraph.style._element.xml
                # reemplazar la cadena
                paragraph.text = paragraph.text.replace(str(key), str(value))
                # aplicar el estilo original nuevamente
                paragraph.style._element.xml = original_style
    
    for key, value in data.items():
        for table in document.tables:
            for row in table.rows:
                for cell in row.cells:
                    for paragraph in cell.paragraphs:
                        if key in paragraph.text:
                            # guardar la información de estilo original
                            original_style = cell._element.xml
                            # reemplazar la cadena
                            paragraph.text = paragraph.text.replace(str(key),str(value))
                            # aplicar el estilo original nuevamente
                            cell._element.xml = original_style
    

    De esta manera, se preserva la información de estilo original y se aplica nuevamente después de reemplazar la cadena, asegurando que el formato de estilo se mantenga igual.

Comments are closed.