Я хотел бы выделить определенные слова в документе MS Word (здесь они представлены как негативный список) и оставить остальную часть документа, как это было раньше.Я пытался перенять этот один , но не могу запустить его так, как должен:
from docx.enum.text import WD_COLOR_INDEX
from docx import Document
import pandas as pd
import copy
import re
doc = Document(docxFileName)
negativList = ["king", "children", "lived", "fire"] # some examples
for paragraph in doc.paragraphs:
for target in negativList:
if target in paragraph.text: # it is worth checking in detail ...
currRuns = copy.copy(paragraph.runs) # deep copy as we delete/clear the object
paragraph.runs.clear()
for run in currRuns:
if target in run.text:
words = re.split('(\W)', run.text) # split into words in order to be able to color only one
for word in words:
if word == target:
newRun = paragraph.add_run(word)
newRun.font.highlight_color = WD_COLOR_INDEX.PINK
else:
newRun = paragraph.add_run(word)
newRun.font.highlight_color = None
else: # our target is not in it so we add it unchanged
paragraph.runs.append(run)
doc.save('output.docx')
В качестве примера я использую этот текст (в файле Word DOCX):
ГЛАВА 1
Столетия назад здесь жили -
"Король!"мои маленькие читатели сразу скажут.
Нет, дети, вы ошибаетесь.Когда-то был кусок дерева.Это был не дорогой кусок дерева.Отнюдь не.Просто обычный кусок дров, один из тех толстых, твердых бревен, которые зимой поджигают, чтобы в холодных комнатах было уютно и тепло.
С моим кодом много проблем:
1) Первое предложение работает, но второе предложение в два раза.Почему?
2) Формат теряется в той части, где я выделяю.Возможно, мне понадобится скопировать свойства оригинального прогона во вновь созданные, но как мне это сделать?
3) Я теряю терминал "-"
4) ВВ последнем абзаце выделено, что «уютно и тепло» отсутствует ...
Что мне понадобится, так это более быстрое решение этих проблем, или, может быть, я обдумываю это, и есть намного более простой способ сделать выделение?(что-то вроде doc.highlight ({"king": "pink"}, но я ничего не нашел в документации)?