如何用Python提取Word文档双栏内容并存储为DataFrame?
提取Word两栏会议数据到DataFrame的实现方案
先装依赖
需要用到python-docx处理Word文档,pandas生成DataFrame,执行安装命令:
pip install python-docx pandas
两种常见场景的代码实现
场景1:文档是两列表格(表头列+内容列)
大部分会议模板会用表格规整两栏内容,直接遍历表格行提取即可:
import docx import pandas as pd # 加载目标Word文档 doc = docx.Document("会议文档.docx") headers = [] contents = [] # 遍历文档中的表格(假设目标表格是第一个,可根据实际调整) for table in doc.tables: for row in table.rows: # 确保每行至少有两个单元格 if len(row.cells) >= 2: header = row.cells[0].text.strip() content = row.cells[1].text.strip() # 跳过空表头行 if header: headers.append(header) contents.append(content) # 生成目标DataFrame df = pd.DataFrame([contents], columns=headers) print(df)
场景2:文档是分栏布局(第一栏全表头,第二栏全内容)
如果是Word分栏排版,第一栏排满表头后再排第二栏内容,需要先提取所有文本再拆分:
import docx import pandas as pd doc = docx.Document("会议文档.docx") # 提取所有非空段落文本 all_text = [p.text.strip() for p in doc.paragraphs if p.text.strip()] # 替换为你实际的表头数量(比如截图里有4个表头,就填4) header_num = 4 headers = all_text[:header_num] # 取对应数量的内容 contents = all_text[header_num:header_num + len(headers)] df = pd.DataFrame([contents], columns=headers) print(df)
额外说明
- 若文档有多个表格,可通过表头关键字(比如找包含"Title"的行)定位目标表格
- 遇到单元格内换行的情况,可把
cell.text换成'\n'.join([run.text for run in cell.runs])来保留换行格式 - 分栏场景必须保证表头和内容的数量完全对应,否则会出现配对错误
内容的提问来源于stack exchange,提问作者Django0602
相关产品推荐
相关产品推荐

