X
X
XeroXe2022-03-04 15:06:16
Python
XeroXe, 2022-03-04 15:06:16

How to replace a certain string with another in a .docx file?

Everything is as in the title - you need to take a .docx document and change certain words in it to those previously entered by the user.

import docx
doc = docx.Document('F://PythonProjects//Trash//example.docx')
paras = doc.paragraphs

name = input()

    for para in paras:
        para = para.text.split(' ')
        for word in para:
            //'NAME,' - строка в исходном файле
            if word == 'NAME,':
                word = name + ','
        para = ' '.join(para)

There are no errors, everything seems to work, but the text in the file does not change.
What is the problem?

Answer the question

In order to leave comments, you need to log in

1 answer(s)
V
Vindicar, 2022-03-04
@Vindicar

In ignorance of the python, of course.
In Python, a variable is nothing more than a reference to an object. Accordingly, if you assigned a variable a reference to another object, the first object will not change from this.

for para in paras: # имя para указывает на объект - элемент списка doc.paragraphs
        para = para.text.split(' ') # имя para указывает на список строк, старая ссылка потеряна.
        for word in para: # имя word указывает на элемент из списка - строку
            //'NAME,' - строка в исходном файле
            if word == 'NAME,':
                word = name + ',' # имя word теперь указывает на другую строку. Список от этого не изменился.
        para = ' '.join(para) # имя para теперь указывает на строку, ссылка на список потеряна
        # а список doc.paragraphs от присваивания выше тоже никак не изменится,
        # так как он ничего не знает об операциях с para.text

Try assigning something to para.text first. And don't reuse variable names, are you forced to pay for each name?
Well, the code that will save the modified document to a file is not given.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question