提取具有与内容关联的样式的Word文档

时间:2019-01-09 09:24:57

标签: formatting text-mining text-extraction python-docx

我正在尝试提取包含不同字体和字号,图像,注释等内容的文字的Word文档格式。我使用zipfile模块来提取Word文档的XML文件。 / p>

XML文件为:

['[Content_Types].xml',
 '_rels/.rels',
 'word/_rels/document.xml.rels',
 'word/document.xml',
 'word/footer2.xml',
 'word/header1.xml',
 'word/footer1.xml',
 'word/endnotes.xml',
 'word/footnotes.xml',
 'word/_rels/header1.xml.rels',
 'word/header2.xml',
 'word/_rels/header2.xml.rels',
 'word/embeddings/Microsoft_Word_97_-_2003_Document1.doc',
 'word/media/image3.wmf',
 'word/media/image2.emf',
 'word/theme/theme1.xml',
 'word/media/image1.png',
 'word/embeddings/oleObject1.bin',
 'word/comments.xml',
 'word/settings.xml',
 'word/styles.xml',
 'customXml/itemProps1.xml',
 'word/numbering.xml',
 'customXml/_rels/item1.xml.rels',
 'customXml/item1.xml',
 'docProps/app.xml',
 'word/stylesWithEffects.xml',
 'word/webSettings.xml',
 'word/fontTable.xml',
 'docProps/core.xml',
 'docProps/custom.xml']

我无法理解与word/document.xml中的内容相关的样式。

我试图通过以下方式封装结果:

{
    "text": "some-text-in-document",
    "font": "some-font",
    "font_size": 10,
    "some_field": "some-more-value",
    ...
}

尝试使用python-docx获取字体和字体大小,但大多数值为None

这是代码段:

from docx.enum.style import WD_STYLE_TYPE
styles = document.styles
#print(styles.default)
paragraph_styles = [s for s in styles if s.type == WD_STYLE_TYPE.PARAGRAPH]
for style in paragraph_styles:
    #print(style.font.name)
    if(style.font.name):
        print(style.font.name, style.font.size)

for paragraph in document.paragraphs:
    #print(paragraph.text)
    for run in paragraph.runs:
        print(run.text)
        font = run.style.font
        print(font.size)

对于字体和大小,结果大多为None

1 个答案:

答案 0 :(得分:0)

None的{​​{1}}值表示style

所有段落都具有样式,只是大多数段落具有相同的样式,因此Word不会针对大多数情况进行拼写,也许是为了节省空间。