如何用Python从Word文档提取指定文本并写入DataFrame?
从Word文档提取特定文本并写入Pandas DataFrame
你现在已经能获取所有段落内容了,接下来的关键是根据特定文本的特征来筛选或解析内容。下面我会针对几种常见的需求场景给出具体实现方案:
场景1:提取包含指定关键词的段落
如果你的目标文本是包含某个关键词的段落(比如所有提到"项目编号"的内容),可以用筛选逻辑来实现:
import docx import pandas as pd # 注意路径用原始字符串或者双反斜杠避免转义问题 doc = docx.Document(r'C:\Location of input file.docx') # 筛选包含目标关键词的段落,同时去除空文本 target_content = [p.text for p in doc.paragraphs if "项目编号" in p.text.strip() and p.text.strip()] # 转换为DataFrame df = pd.DataFrame({"提取内容": target_content}) # 查看结果或保存到文件 print(df.head()) df.to_excel("extracted_data.xlsx", index=False)
场景2:解析结构化键值对(如"XX: XX"格式)
如果文档里是类似"姓名: 李四\n邮箱: lisi@example.com"这种结构化的内容,可以把它们解析成DataFrame的列:
import docx import pandas as pd doc = docx.Document(r'C:\Location of input file.docx') record = {} for para in doc.paragraphs: text = para.text.strip() # 只处理包含冒号的结构化行,跳过空行 if ":" in text and text: # 仅分割第一个冒号,避免值里包含冒号导致解析错误 key, value = text.split(":", 1) record[key.strip()] = value.strip() # 转换为DataFrame(如果有多组这样的记录,可以用列表存储多个字典再转换) df = pd.DataFrame([record]) print(df)
场景3:提取特定格式的文本(如加粗、标题)
如果目标文本有格式特征(比如加粗、标题样式),可以通过python-docx的格式属性来提取:
提取所有加粗内容
import docx import pandas as pd doc = docx.Document(r'C:\Location of input file.docx') bold_content = [] for para in doc.paragraphs: # 遍历段落里的每个文本块,筛选加粗的部分 bold_runs = [run.text for run in para.runs if run.bold] if bold_runs: bold_content.append("".join(bold_runs)) df = pd.DataFrame({"加粗文本": bold_content}) print(df)
提取指定标题级别的内容
import docx import pandas as pd doc = docx.Document(r'C:\Location of input file.docx') # 提取一级标题(样式名称可能因文档而异,比如中文文档可能是"标题1",英文是"Heading 1") heading1_content = [p.text for p in doc.paragraphs if p.style.name in ("Heading 1", "标题1")] df = pd.DataFrame({"一级标题": heading1_content}) print(df)
小提示
如果你的特定文本有更复杂的规则(比如在表格中、特定章节下,或是有固定的文本模式),可以补充说明这些细节,这样能给出更精准的解决方案。
内容的提问来源于stack exchange,提问作者Kumar Abhishek




