Cuando se reemplace el contenido del archivo de Word y se guarde el archivo, el bucle “for” solo se ejecuta una vez.
Mi objetivo es reemplazar cierto contenido específico en un archivo de Word y luego guardar el archivo en el directorio antiguo. Me gustaría reemplazar el mismo archivo de Word y generar varios archivos. Usé un bucle for y no logró generar 3 archivos en lugar de solo 1 archivo. Todavía no puedo ver cuál es el problema. ¿Alguien puede ayudarme?
Los códigos son los siguientes:
from docx import Document
import os
def main():
path = r'C:\Users\Sharon.X.Fang\Desktop'
EXPERT_NAME = ['Yang', 'Xie', 'Wang']
template_file_path = path+os.sep+'to Mr.Xie-invitation.docx'
i = 0
for name in EXPERT_NAME:
for i in range(3):
output_file_path = path+os.sep+str(i)+'to Mr.'+name+'-invitation.docx'
i = i + 1
variables = {
"${EXPERT_NAME}": "Mr.Xie",
"${Fee}": "1,000",
"${Q_1}": "¿Cuál es tu hobby?",
"${Q_2}": "¿Cómo estás?",
}
template_document = Document(template_file_path)
for variable_key, variable_value in variables.items():
for paragraph in template_document.paragraphs:
replace_text_in_paragraph(paragraph, variable_key, variable_value)
template_document.save(output_file_path)
def replace_text_in_paragraph(paragraph, key, value):
if key in paragraph.text:
paragraph.text = paragraph.text.replace(key, value)
if __name__ == '__main__':
main()
davy.ai
Hay algunos problemas con el código proporcionado:
EXPERT_NAME
.La variable
i
se incrementa fuera del bucle for que genera las rutas de los archivos de salida, por lo que siempre será 3 cuando llegue a la líneatemplate_document.save(output_file_path)
. Esto significa que solo se utilizará la última ruta de archivo de salida generada para guardar el documento.Para solucionar estos problemas, el código debe ser revisado de la siguiente manera:
Esto generará 9 archivos de salida, 3 para cada nombre de experto.