python如何识别docx文件中的分页符,并在每个pag中创建文本列表

2024-10-01 13:33:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码来分割docx文件的每个段落并附加到一个列表中,但是我需要在xml树结构中标识分页符,并为每个页面创建一个文本列表。如果有帮助,我们很乐意提供确切的名称空间:

xml_content = document.read('word/document.xml')
tree = XML(xml_content)
aggText = []
#tree.getiterator method looks at previously defined word namespaces
for paragraph in tree.getiterator(PARA):
     texts = [node.text
             for node in paragraph.getiterator(TEXT)
             if node.text]
     if texts:
        aggText.append(''.join(texts))

我认为更新后的循环看起来像下面这样,但不确定如何在xml树结构中定位分页符:

^{pr2}$

任何想法都将不胜感激!在


Tags: textinnodetree列表forxmlcontent
2条回答

在Mac上用MS Word 2011创建了一个Word doc。在

保存为Word XML doc的Word doc为4页,每页包含以下内容:

  1. 第1页
  2. 第2页
  3. [故意清空]
  4. 第4页

相关的xml如下:

<w:t>Page1</w:t></w:r></w:p><w:p w14:paraId="7DC7FC1F" w14:textId="77777777" w:rsidR="00147F82" w:rsidRDefault="00147F82"><w:r><w:br w:type="page"/></w:r></w:p><w:p w14:paraId="7C202865" w14:textId="77777777" w:rsidR="00E3126A" w:rsidRDefault="00147F82"><w:r><w:lastRenderedPageBreak/><w:t>Page2</w:t></w:r></w:p><w:p w14:paraId="78BAA3B3" w14:textId="77777777" w:rsidR="00E3126A" w:rsidRDefault="00E3126A"><w:r><w:br w:type="page"/></w:r></w:p><w:p w14:paraId="2B26F15B" w14:textId="77777777" w:rsidR="00E3126A" w:rsidRDefault="00E3126A"><w:r><w:br w:type="page"/></w:r></w:p><w:p w14:paraId="1005F61F" w14:textId="77777777" w:rsidR="00C66DE3" w:rsidRDefault="00E3126A"><w:r><w:t>Page4</w:t>

每个页面之间有一个<w:br w:type="page"/></w:r>标记。在

解决方案如下,我还更新了iterator函数,因为getiterator()现在不推荐使用。在

NAMESPACE = 
'{http://schemas.openxmlformats.org/wordprocessingml/2006/main}'
pages = []
PARA = NAMESPACE + 'p'
TEXT = NAMESPACE + 't'
PAGE = NAMESPACE + 'lastRenderedPageBreak'
aggText = ''
for paragraph in tree.iter(PARA):
     aggText += ''.join([node.text
             for node in paragraph.iter(TEXT)
             if node.text])
     if aggText and [node for node in paragraph.iter(PAGE):
        pages.append(aggText)
        aggText = ''
if aggText != '':
     pages.append(aggText)

相关问题 更多 >