如何通过表格标题从单词中提取表格



我面临着试图以表的形式从word文件中提取数据的问题。我必须遍历500个单词的文件,并在每个文件中提取一个特定的表,但该表在每个单词文件中的不同位置出现。这是我的代码:


import pandas as pd
from docx.api import Document
import os
os.chdir('C:\Users\user1\test')
path = 'C:\Users\user1\test'


worddocs_list = []
for filename in list(os.listdir(path)):
wordDoc = Document(path+"\"+filename)
worddocs_list.append(wordDoc)
data = []    

for wordDoc in worddocs_list:
table = wordDoc.tables[8]

for i, row in enumerate(table.rows):
text = (cell.text for cell in row.cells)
row_data = (text)
data.append(row_data)
df = pd.DataFrame(data)
print(df)

它可以很好地遍历所有文件,但会出现错误,因为某些word文档没有它要查找的表,因为它只查找一个元素:wordDoc.tables[8],因此会出现IndexError。我希望能够将其更改为具有某些列标题的表:联系人姓名职位位置电子邮件电话资产类别

有没有一种方法可以修改显示的代码,以便能够找到我要查找的表?

非常感谢。

您可以捕获索引错误并忽略它,而不是更改逻辑以查找具有特定列名的表。这将使您能够在文档中不存在该表时无错误地继续操作。这是使用tryexcept来完成的。

import pandas as pd
from docx.api import Document
import os
os.chdir('C:\Users\user1\test')
path = 'C:\Users\user1\test'
worddocs_list = []
for filename in list(os.listdir(path)):
wordDoc = Document(os.path.join(path, filename))
worddocs_list.append(wordDoc)
data = []    

for wordDoc in worddocs_list:
try:
table = wordDoc.tables[8]
for i, row in enumerate(table.rows):
text = (cell.text for cell in row.cells)
row_data = (text)
data.append(row_data)
except IndexError:
continue
df = pd.DataFrame(data)
print(df)

此外,请注意,组合路径时最好使用os.path.join(),而不是连接路径字符串。

最新更新