在日常办公和文档处理中,我们常常需要在大量的Word文档中查找特定的关键字,然后进行接下来的操作,比如关键字替换等。手动逐个打开并搜索文档显然是费时费力的。因此,利用Python编写一个批量实现Word中查找关键字的程序可以大大提高效率和减少工作负担。
二、开发环境
-
Python编程语言:Python是一种简洁、易读易写的高级编程语言,具有强大的数据处理和文本处理能力。本地使用Python3.6版本。
-
Python-docx库:Python-docx是一个用于操作Microsoft Word文档(.docx文件)的第三方库,可以读取和修改Word文档内容。
-
文本编辑器或集成开发环境(IDE):选择一个适合你的编程习惯和需求的编辑器或IDE,例如Visual Studio Code、PyCharm等。本地使用PyCharm2022。
在搭建好开发环境后,我们将使用Python编写程序来实现以下步骤:
-
安装所需库:通过命令行或Anaconda Prompt安装Python-docx库。
-
导入必要的库:在Python代码中引入所需的库,例如
import docx
。
-
获取Word文档列表:使用Python的文件操作函数遍历指定文件夹中的所有Word文档,将它们的路径存储在一个列表中。
-
打开并读取Word文档:循环遍历Word文档列表,逐个打开文档并读取其内容。
-
查找关键字:使用Python字符串操作函数在读取的文档内容中查找指定的关键字。
-
输出结果或执行其他的操作:如果关键字在word中,则将文件移出到新建的文件夹中。
三、实现代码
#!/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):
# 若报错,则跳过,有的文件无法读取成功
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}' 未找到。")
# 原文件夹路径
source_file_path = 'D:\Pycharmproject2023\code_test_project\shan_test\正样本终版\\'
# 搜索的关键字
keyword = '求职意向'
for filename in os.listdir(source_file_path):
# 创建新文件夹,用于找到相应文件之后将其移入到该文件夹中
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)}")
在日常办公和文档处理中,我们常常需要在大量的Word文档中查找特定的关键字,然后进行接下来的操作,比如关键字替换等。手动逐个打开并搜索文档显然是费时费力的。因此,利用Python编写一个批量实现Word中查找关键字的程序可以大大提高效率和减少工作负担。
pip install python-docx
python-docx是用于创建和更新Microsoft Word(.docx)文件的Python库。它可以针对word做很多操作。比如打开文件、写入内容、编写内容样式、解析内容、读取内容等等。主要就是针对word做的一款功能库。
下面一起来说一下代码。首先是做了一个声明的内容,主要是出现过代码工具被网络上的人给进行贩卖,特此说了注释。
1、通过os类库,
def extract_keyword_paragraphs(doc_path, keyword):
doc = docx.Document(doc_path)
keyword_paragraphs = []
for paragraph in doc.paragraphs:
if keyword in paragraph.text:
keyword_paragraphs.append(paragraph.text)
return keyword_paragraphs
doc_path = "sample.docx"
keyword = "关键字"
keyword_paragraphs = extract_keyword_paragraphs(doc_path, keyword)
for paragraph in keyword_paragraphs:
print(paragraph)
首先,我们需要导入python-docx库。然后,定义一个`extract_keyword_paragraphs`函数来提取关键字段落。这个函数接受两个参数:`doc_path`表示Word文档的路径,`keyword`表示要提取的关键字。在函数内部,我们使用`docx.Document`来打开Word文档,然后遍历所有段落(`doc.paragraphs`),并检查每个段落中是否包含关键字。如果包含,将该段落加入到`keyword_paragraphs`列表中。最后,返回提取到的关键字段落。
接下来,我们指定要提取关键字段落的Word文档路径和关键字,并调用`extract_keyword_paragraphs`函数进行提取。最后,我们遍历提取到的关键字段落列表,并逐行打印出来。
请注意,这只是一个简单的示例,实际应用中可能还需要根据具体需求进行进一步处理和优化,比如处理表格中的字段落、提取其他格式的文本等。另外,需要安装python-docx库,可以使用`pip install python-docx`命令进行安装。