在日常办公和文档处理中,我们常常需要在大量的Word文档中查找特定的关键字,然后进行接下来的操作,比如关键字替换等。手动逐个打开并搜索文档显然是费时费力的。因此,利用Python编写一个批量实现Word中查找关键字的程序可以大大提高效率和减少工作负担。
在搭建好开发环境后,我们将使用Python编写程序来实现以下步骤:
import docx
。#!/usr/bin/python
# -*- coding: UTF-8 -*-
"""
@author:Awen
@file:task_test.py
@time:2023/07/04
@function:Python实现在word中批量查找关键字,如果关键字在word中,则将文件移出到新建的文件夹中
"""
import os
import shutil
from docx import Document
from docx.opc.exceptions import PackageNotFoundError
def search_keyword_in_word(keyword, file_path):
# 若报错,则跳过,有的文件无法读取成功
try:
document = Document(file_path)
found_paragraphs = []
for paragraph in document.paragraphs:
if keyword in paragraph.text:
found_paragraphs.append(paragraph.text)
return found_paragraphs
except PackageNotFoundError:
print(f"文件 '{file_path}' 未找到。")
pass
# 原文件夹路径
source_file_path = 'D:\Pycharmproject2023\code_test_project\shan_test\正样本终版\\'
# 搜索的关键字
keyword = '求职意向'
for filename in os.listdir(source_file_path):
try:
# 创建新文件夹,用于找到相应文件之后将其移入到该文件夹中
new_directory = os.path.join(source_file_path, "data123")
os.makedirs(new_directory, exist_ok=True)
if filename.endswith('.docx'):
print(filename)
result = search_keyword_in_word(keyword, source_file_path+filename)
for paragraph in result:
print(paragraph)
# 如果求职意向中包含java字样,则是任务目标文件
if "java" in paragraph.lower():
new_file_path = os.path.join(new_directory, filename)
shutil.move(source_file_path+filename, new_file_path)
print(f"已移动文件: {filename}")
# # 删除原文件夹中的文件
# os.remove(source_file_path+filename)
# print(f"已删除文件: {filename}")
except Exception as e:
print(f"处理文件 '{filename}' 时出现错误: {str(e)}")
pass