python docx删除表从文档中删除



我想根据左上小区的内容从文档中删除一些表。

我尝试了:

allTables = document.tables
for activeTable in allTables:
    if activeTable.cell(0,0).paragraphs[0].text == 'some text':
        allTables.remove(activeTable)

我希望删除所有包含单元格(0,0)中包含"一些文本"的表,但它们仍在文档中。

该过程以" alltables.remove(activetable)"为预期进入该行:if语句中的indexToDelete = allTables.index(activeTable)给出了表格,我正在寻找。

该消息是"完成出口代码0的过程"

解决方案是:

allTables = document.tables
for activeTable in allTables:
    if activeTable.cell(0,0).paragraphs[0].text == 'some text':
        activeTable._element.getparent().remove(activeTable._element)

感谢Scanny。

听起来您的测试if activeTable...text == 'some text'在任何表中都没有成功。在这种情况下,.remove()调用从未执行,但脚本仍然返回0的退出代码(成功)。

首先验证您的测试,也许类似:

for table in document.tables:
    print("'%s'" % table.cell(0, 0).paragraphs[0].text)

并确保段落文本是您认为的。这应该打印出:

'some text but also some other text'
...

确定了这一点,您可能需要在整个字符串以外的其他内容上进行测试,也许使用.startswith()

text = table.cell(0, 0).paragraphs[0].text
if text.startswith('some text'):
    print('found one')

一旦有工作,您就可以继续解决下一个问题。

您可以使用此功能

from docx import Document
document = Document('YOUR_DOCX')
def Delete_table(table):
        document.tables[table]._element.getparent().remove(document.tables[table]._element)
Delete_table(0)
document.save('OUT.docx')

相关内容

  • 没有找到相关文章

最新更新