У меня возникли проблемы с использованием Python Docx для замены строки при сохранении стиля (даже с этим суперполезным постом). Изюминка, которую я добавляю, заключается в том, что в моем тексте есть точки, которые распознаются как отдельные прогоны.
Я только начал с python-docx, и после прочтения документации понял, что он работает с целыми абзацами. Я пытался использовать его на уровне прогонов, но, похоже, он ограничивается точками [.], любым числовым текстом или текстом другого формата. Чего я пытаюсь добиться, так это найти --› заменить {{%cellbg key.value }}
(как в примере ниже), сохраняя при этом стиль.
В моем шаблоне Word:
sometext.here{{%cellbg key.value }}some.other.text.i.don't.care.about
Мой код питона:
from docx import Document
doc = Document(filename)
for p in doc.paragraphs:
if re.search('(.*?){{%cellbg (.*?) }}(.*?)', paragraph.text):
cellbg_og = re.search(r'\{\{%cellbg (.*?)\}\}(.*?)', paragraph.text).group(0)
cellbg_tag = re.search(r'\{\{\%(.*?)\s\}\}', cellbg_og).group(1)
replace_cellbg = '{% ' + cellbg_tag + ' %}'
paragraph.text = paragraph.text.replace(cellbg_og, replace_cellbg)
# doc.save(filename)
doc.save('test.docx')
return 1
В идеале, когда я реализую это, я хотел бы получить следующий результат:
Исходный шаблон: sometext.here{{%cellbg key.value }}some.other.text.i.don't.care.about
Ожидаемый результат: sometext.here{% cellbg key.value %}some.other.text.i.don't.care.about
Что я сейчас получаю: sometext.here{% cellbg key.value %}some.other.text.i.don't.care .о
Что я делаю не так? Любая помощь будет супер оценена!