python中查找文件夹下子文件中PDF中的关键字并导出前后10个字符
时间: 2024-09-07 16:02:48 浏览: 103
python实现递归查找某个路径下所有文件中的中文字符
在Python中,你可以使用`os`, `re`, 和 `pdfplumber` 这些库来查找指定文件夹下的PDF文件中包含特定关键字,并提取前后10个字符的信息。以下是一个基本示例:
```python
import os
import re
from pdfplumber import PDF
# 定义要搜索的关键字和要保存结果的路径
keyword = "your_keyword"
output_folder = "./output"
def extract_text_from_pdf(pdf_path):
with PDF(pdf_path) as pdf:
text = ""
for page in pdf.pages:
text += page.extract_text()
return text
def search_and_extract(pdf_text, keyword, n_chars=10):
matches = [m.start() - n_chars for m in re.finditer(keyword, pdf_text)]
return [(match, pdf_text[match : match + (n_chars * 2)]) for match in matches]
# 遍历文件夹
for root, dirs, files in os.walk(".", topdown=True):
if ".pdf" in files:
file_path = os.path.join(root, files[0])
pdf_text = extract_text_from_pdf(file_path)
if keyword in pdf_text:
matched_results = search_and_extract(pdf_text, keyword)
# 保存匹配到的结果
save_results(matched_results, output_folder)
def save_results(results, folder):
os.makedirs(folder, exist_ok=True)
for index, match_info in enumerate(results):
start, context = match_info
with open(f"{folder}/result_{index}.txt", 'w') as f:
f.write(f"Keyword found at position {start}, context: {context}")
# 调用函数开始处理
search_and_extract(keyword=keyword, n_chars=10)
```
这个脚本首先打开每个PDF,提取文本,然后搜索关键字并保存匹配到位置及其前后10个字符的内容。请注意,你需要安装`pdfplumber`库来解析PDF(可以使用pip install pdfplumber),并且此脚本仅返回了匹配的位置,如果需要更详细的上下文信息,你可能需要调整提取内容的方式。
阅读全文