You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用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

火山引擎 最新活动