【问题标题】:Python: Read Word Document In OrderPython:按顺序读取 Word 文档
【发布时间】:2020-08-04 15:20:42
【问题描述】:

第一次在这里使用python。我正在尝试浏览一个包含段落和表格的word文档。我已经弄清楚如何使用以下代码浏览文档中的所有段落和文档中的所有表格:

for table in doc.tables:
    for row in table.rows:
        for cell in row.cells:
             print(str(paragraph.text))

for i in doc.paragraphs:
    splitstring = i.text.split(" ", 1)
    print(splitstring[0])

但我正试图找出一种方法来按顺序浏览文档,就像阅读它的任何人一样。因此,如果我们有一个包含以下内容的文档:

Paragraph 1
Paragraph 2
Table 1
Paragraph 3
Table 2
Paragraph 4

它会按顺序读取它们。我想这样做的原因取决于表格后面的段落,我想对其进行不同的操作。

【问题讨论】:

    标签: python python-3.x ms-word docx paragraph


    【解决方案1】:

    这取决于您是否可以访问代码中的订单信息。

    在您发布的代码中,您有两个循环:
    一个用于打印每个表格的内容。
    一个用于打印每个段落的内容。

    这些循环是按顺序执行的,但您可能希望将它们的功能交织在一起,如下所示:

    def print_table(table):
        for row in table.rows:
            for cell in row.cells:
                print(str(cell.text))
    
    def print_paragraph(paragraph): 
        splitstring = paragraph.text.split(" ", 1)
        print(splitstring[0])
    
    # Main loop:
    for entry in doc.entries: 
    
       if isinstance(entry, doc.paragraph):
           print_paragraph(entry)
       else:
           print_table(entry)
    

    因此,您需要知道您是否有权访问数据的顺序。
    在上面的假设代码中,数据结构doc.entries存储了表格/段落的顺序。

    【讨论】:

    • 嗨,麦克斯,感谢您的回复。你的建议很有意义,但我收到错误AttributeError: 'Document' object has no attribute 'entries'。有什么想法吗?
    • 嗨 Bob,我的代码是假设的,doc.entries 是我编造的名称。我不知道您是否有权访问包含按出现顺序包含段落和表格的属性。你需要发现这一点。您的 doc 变量来自哪里?它来自 Python 库吗?也许然后有在线文档。如果您无权访问 doc 变量的来源,请尝试 print(dir(doc))。这将显示 doc 变量具有的所有属性和方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    • 1970-01-01
    相关资源
    最近更新 更多