Python docx在保留样式的同时替换段落中的字符串

在保留整个文档的格式的同时,我需要帮助替换Word文档中的字符串。

我使用的是python-

docx,在阅读了文档后,它可用于整个段落,因此我松散了诸如粗体或斜体字之类的格式。包括要替换的文本以粗体显示,我希望保持这种状态。我正在使用此代码:

from docx import Document

def replace_string2(filename):

doc = Document(filename)

for p in doc.paragraphs:

if 'Text to find and replace' in p.text:

print 'SEARCH FOUND!!'

text = p.text.replace('Text to find and replace', 'new text')

style = p.style

p.text = text

p.style = style

# doc.save(filename)

doc.save('test.docx')

return 1

因此,如果我实现它并想要类似(包含要替换的字符串的段落丢失其格式):

这是 ,这是 文本。

这是 ,我将替换

当前结果是:

这是 ,这是 文本。

这是第2段,我将替换新文本

回答:

我发布了这个问题(即使我在这里看到了几个相同的问题),因为(据我所知)这些问题都没有解决这个问题。我曾经尝试过使用oodocx库,但是没有用。所以我找到了一种解决方法。

代码非常相似,但是逻辑是:当我找到包含要替换的字符串的段落时,请使用

添加另一个循环。(这仅在我要替换的字符串具有相同格式的情况下才有效)。

def replace_string(filename):

doc = Document(filename)

for p in doc.paragraphs:

if 'old text' in p.text:

inline = p.runs

# Loop added to work with runs (strings with same style)

for i in range(len(inline)):

if 'old text' in inline[i].text:

text = inline[i].text.replace('old text', 'new text')

inline[i].text = text

print p.text

doc.save('dest1.docx')

return 1

以上是 Python docx在保留样式的同时替换段落中的字符串 的全部内容, 来源链接: utcz.com/qa/410011.html

回到顶部