You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python提取搜索词后的内容并存入字典(PDF文本场景)

提取PDF中指定关键词后的内容并存入字典

问题描述

我已使用PyPDF2库将PDF文件中的内容提取为文本,现需编写代码实现:提取指定搜索词(如CODE、LVI、HEALTH)后续的单词或句子(以\n作为句子结束标识)并存入字典。我是NLP入门学习者,目前仅能提取搜索词后的单个单词,不知如何适配句子场景。

文本示例

["CODE: ID\nStudy of Men's brain ID\nBased upon 16",  '3 valid cases out of 76',  '33 total cases.\n•Mean: 54695.29\n•Minimum:8.00\nVariable Type:  numeric \nHEALTH: h1 - Health in general\n xxx',  ' ccc']

现有代码

import PyPDF2
search_keywords=['CODE','LVI','HEALTH']

pdfFileObj = open('df.pdf', 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
pageObj = pdfReader.getPage(5)
text=(pageObj.extractText())
text=text.split(",")
text

期望输出

{"CODE":"ID", "LVI":None, "HEALTH":"h1 - Health in general"}

解决方案

实现思路

  1. 将拆分后的文本列表合并为完整字符串,避免跨片段匹配失败
  2. 使用正则表达式对每个关键词进行匹配,精准捕获从关键词后到第一个换行符之间的内容
  3. 初始化结果字典,未匹配到的关键词默认赋值为None

完整代码

import PyPDF2
import re

search_keywords = ['CODE', 'LVI', 'HEALTH']
# 初始化字典,所有关键词默认值为None
result_dict = {kw: None for kw in search_keywords}

pdfFileObj = open('df.pdf', 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
pageObj = pdfReader.getPage(5)
text = pageObj.extractText()

# 若原代码将文本按逗号拆分为列表,需先合并为完整字符串
# text = ''.join(text)

# 遍历每个关键词进行匹配
for kw in search_keywords:
    # 正则匹配规则:关键词+冒号+任意空白字符,然后捕获到第一个换行符前的内容
    match = re.search(rf'{kw}:\s*(.*?)\n', text)
    if match:
        # 去除结果前后的空白字符,保证内容整洁
        result_dict[kw] = match.group(1).strip()

print(result_dict)

代码说明

  • 正则表达式:rf'{kw}:\s*(.*?)\n'
    • {kw}:匹配当前目标关键词
    • :\s*:匹配关键词后的冒号及任意数量的空白字符(空格、制表符等)
    • (.*?):非贪婪模式匹配任意字符,直到遇到第一个换行符\n,确保只捕获当前行的内容
  • 字典初始化:提前为所有关键词设置None默认值,确保未匹配到的关键词在结果中保留预期格式
  • 文本合并:如果原代码通过split(",")将文本拆分为列表,必须先执行text = ''.join(text)合并为完整字符串,否则正则无法跨片段匹配内容

内容的提问来源于stack exchange,提问作者user14269252

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 10:35:02