如何使用 python docx 从多个文件中提取 Word table

How to extract a Word table from multiple files using python docx

我正在做一个项目,我需要分析一千多个 MS-Word 文件,每个文件都包含相同的 table。从每个 table 我只需要提取几个单元格并将它们变成一行,稍后将连接起来创建一个日期框以供进一步分析。

我在一个文件上测试了 Python 的库 docx,它成功地读取了 table。然而,在将相同的函数插入到一个 for 循环中之后,该循环首先创建一个由所有文件名组成的变量,然后将其传递给 Document 函数,输出只是一个 table,这是第一个 [=24] =] 在文件列表中。

我觉得我没有以正确的方式看待这个问题,我将不胜感激,因为我现在完全无助了。

以下是我使用的代码,它主要由我在Whosebug中偶然发现的代码组成:

import os
import pandas as pd
file = [f for f in os.listdir() if f.endswith(".docx") ]

for name in file:
    document = Document(name)
    table = document.tables[0]
    data = []

    keys = None
    for i, row in enumerate(table.rows):
        text = (cell.text for cell in row.cells)

        # Establish the mapping based on the first row
        # headers; these will become the keys of our dictionary
        if i == 0:
            keys = tuple(text)
            continue

        # Construct a dictionary for this row, mapping
        # keys to values for this row
        row_data = dict(zip(keys, text))
        data.append(row_data)

谢谢

您正在将每个文档的 data 列表重新初始化为 [](空)。因此,您仔细地从文档中收集行数据,然后在下一步中将其丢弃。

如果您将 data = [] 移动到循环之外,那么在遍历文档后它将包含所有提取的行。

data = []

for name in filenames:
    ...
    data.append(row_data)

print(data)