@KseroXe

Как заменить определенную строку на другую в файле формата .docx?

Все как и в заголовке - нужно взять документ формата .docx и поменять в нем определенные слова на введенные ранее пользователем.
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)

Ошибок не возникает, вроде все работает, но в текст в файле не меняется.
В чем проблема?
  • Вопрос задан
  • 310 просмотров
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
В незнании питона, разумеется.
В Питоне переменная - это не более чем ссылка на объект. Соответственно, если ты присвоил переменной ссылку на другой объект - от этого первый объект не изменится.
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

Попробуй присвоить что-нибудь para.text, для начала. И не переиспользуй имена переменных, тебя что, платить заставляют за каждое имя?
Ну и не приведён код, который сохранит изменённый документ в файл.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы