Найдите и замените курсив в документе Word на Python win32com

Я столкнулся с большой проблемой с пакетом Python win32com: Моя проблема в том, что я хочу найти несколько слов в документе Word и выделить их курсивом.

Допустим, у меня в документе 10 раз встречается слово «Привет». Я хочу выделить все 10 случаев появления слова «Hello» и написать их курсивом.

Есть идеи, как это сделать? Я искал решение несколько месяцев и не нашел!

Большое спасибо!


person Titou EJE    schedule 18.12.2015    source источник
comment
Покажи свои попытки или какой-то код.   -  person xiº    schedule 18.12.2015
comment
На самом деле мне действительно нечего вам показать, я использую следующую команду для замены слов: app.Selection.Find.Execute("Hello", False, False, False, False, False, True, wdFindContinue, False, "Good morning", wdReplaceAll)   -  person Titou EJE    schedule 20.12.2015


Ответы (1)


Одним из решений было бы избегать использования wdReplaceAll, а вместо этого просто сделать

import win32com.client
import os

word = win32com.client.Dispatch('Word.Application')
word.Documents.Open(os.path.abspath(r'.\your_document.docx'))
while word.Selection.Find.Execute('Hello'):
    word.Selection.Range.Font.Italic = True

Здесь мы непрерывно ищем 'Hello' и для каждого результата поиска используем тот факт, что совпадение становится доступным как выбранный диапазон.

Обратите внимание, что это не оборачивается вокруг поиска, поэтому, если это становится необходимым в вашем случае (что может быть, если вы не можете гарантировать, что поиск запускается в начале документа), вы можете использовать _ 4_ (и будьте осторожны, чтобы избежать потенциальных бесконечных циклов ).

person fuglede    schedule 02.12.2017