Python Docx:在两个给定字符串之间提取表

时间:2015-07-02 16:05:48

标签: python python-docx

我正在尝试提取在word文档中的两段文本之间找到的特定表格列表。我正在使用python docx,我面临的是文本可以通过使用

进行解析
LightSchema
    BaseSchema
        aSchema
        bSchema

通过使用

解析表格
document.paragraphs[index].text

这会分隔文本和表格,使得在两段文本之间包含表格列表变得更加困难。我正在尝试的方法是使用下面表格中每个列表的元素来获取段落/表格的地址。

document.tables[index].cell[row,col]
然后,我会提取每个表的地址,并检查它是否在起始和结束文本的地址之间。但是,问题是所有的表地址都大于文本的起始和结束地址,我找不到任何关于python docx如何找到这些地址的文档,因为我假设地址是逐步顺序通过文档的。这种方法有用吗?我还可以尝试在word文档中的两段文本之间查看这些表格吗?

1 个答案:

答案 0 :(得分:1)

此处描述的此限制有一种解决方法: https://github.com/python-openxml/python-docx/issues/40

您想要向下滚动到最后,也许会以相反的顺序和常规方式阅读;根据最近版本python-docx内部的更改,对程序进行了一些调整。

为下面的对象显示的地址引用内存位置,并且与python-docx文档中段落或其他内容的顺序没有定义的关系。可以依赖它们作为该Python内存中对象的唯一标识符,但仅此而已。注意仔细使用术语"记忆对象"而不是"文档对象"。例如,如果创建了两个引用文档中相同段落的对象,则它们将具有两个不同的地址。

<docx.text.paragraph.Paragraph object at 0x04299FD0>

可以使用Python中的id()函数访问这些值。 https://docs.python.org/2/library/functions.html#id