【发布时间】:2021-06-20 14:23:27
【问题描述】:
我在使用 Python Docx 替换字符串同时保持样式 (even with this super useful post) 时遇到问题。我要添加的转折是我的文本中有句点,它们被识别为单独的运行。
我刚开始使用 python-docx,阅读文档后,我的理解是它确实适用于整个段落。我已经尝试在运行级别使用它,但它似乎在句点 [.]、任何数字文本或其他格式的文本处结束。我想要实现的是查找 --> 替换 {{%cellbg key.value }}(如下例所示),同时仍保持样式。
在我的 Word 模板中:
sometext.here{{%cellbg key.value }}some.other.text.i.don't.care.about
我的python代码:
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.about
我做错了什么?任何帮助将不胜感激!
【问题讨论】:
-
答案成功了吗?