我可以使用python-docx更改MS Word中的文本,而不会丢失特征吗?

时间:2016-02-01 07:39:29

标签: python ms-word python-docx

我现在在MS Word中有一个英文单词文档,我想用python将其文本更改为中文。我一直在使用Python 3.4并安装了python-docx。这是我的代码:

from docx import Document
document = Document(*some MS Word file*)
# I only change the texts of the first two paragraphs
document.paragraphs[0].text = '带有消毒模式的地板清洁机'
document.paragraphs[1].text = '背景'
document.save(*save_file_path*)

前两行确实变成了汉字,但字体和粗体等特征都消失了: the original file looks like this

and the new file looks like this

无论如何我可以改变文字而不会失去原有的特征吗?

2 个答案:

答案 0 :(得分:0)

您可以获取现有段落的样式并将其应用于新段落 - 请注意现有段落可能指定不支持中文的字体。

答案 1 :(得分:0)

这取决于特征的应用方式。有一种称为样式层次结构的东西,文本特征可以应用于任何地方,从直接到文本,样式或文档默认,以及中间的级别。

有两个主要的特征类:段落属性和运行属性。段落属性是诸如对齐,前后空间等等。与大小,字体,颜色,下标,斜体,粗体等字符级格式有关的所有内容都是一个run属性,也简称为< EM>字体

因此,如果要保留文本行的字体,则需要在运行级别进行操作。这样的操作将保留字体格式:

run.text = "New text"

这样的操作将保留段落格式,但删除段落样式未应用的任何字符级格式:

paragraph.text = "New paragraph text"

您需要为您的应用程序决定是否修改单个运行(可能很难识别),或者您是否使用不同的段落并对每个段落应用不同的样式。我推荐后者。所以在你的例子中,&#34;地板清洁机......&#34;,&#34;背景&#34;和&#34; [0001] ...&#34;将各自成为不同的段落。在屏幕截图中,它们在单个段落中显示为单独的运行,以换行符分隔。