如何用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"}
解决方案
实现思路
- 将拆分后的文本列表合并为完整字符串,避免跨片段匹配失败
- 使用正则表达式对每个关键词进行匹配,精准捕获从关键词后到第一个换行符之间的内容
- 初始化结果字典,未匹配到的关键词默认赋值为
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
相关产品推荐
相关产品推荐

