你是否曾经遇到过需要从中英文混合的文本中提取关键词的情况?这个问题似乎比较复杂,但是通过合适的正则表达式规则,你可以轻松解决这个问题。在本文中,我将向你介绍如何构建正则表达式规则,以从中英文混合语句中提取关键词。
开始之前的故事
在某个工作场景中,你需要处理本科毕业生的毕业论文,将其中的关键词提取出来,并填充到Excel表格中。学生的关键词信息通常位于PDF文档的摘要部分,这些关键词可能包含中英文混合的文本,关键词之间用空格分隔,关键词后面有时带有冒号,有时没有。此外,每个学生的关键词数量可能不同,最多不超过6个,并且关键词的结束应该是换行符(\n
)。
使用Python中的正则表达式
为了提取这些关键词,我们可以使用Python中的正则表达式库re
。下面是一个示例代码,演示了如何使用正则表达式来提取关键词:
import re
text = "关键词:Python 多线程 目标检测 Python Flask 框架"
# 构建正则表达式规则
pattern = r'关键词[::]?\s*([^:\n]+)(?:[::]\s*([^:\n]+))?(?:[::]\s*([^:\n]+))?(?:[::]\s*([^:\n]+))?(?:[::]\s*([^:\n]+))?(?:[::]\s*([^:\n]+))?\s*\n'
# 使用正则表达式进行匹配
matches = re.search(pattern, text)
if matches:
# 提取关键词
keywords = [match.strip() for match in matches.groups() if match]
print(keywords)
else:
print("未匹配到关键词")
这段代码首先构建了一个正则表达式规则pattern
,用于匹配关键词。然后,使用re.search()
函数在文本text
中查找匹配项。如果找到匹配项,就提取关键词并打印出来。
自动获取PDF文档中的关键词
现在你知道如何使用正则表达式提取关键词了,但如何自动获取PDF文档中的文本并应用这个正则表达式呢?下面是一个简单的步骤:
- 使用Python的PDF库(如
PyPDF2
)打开PDF文档并提取文本内容。 - 针对每个文档中的摘要部分,应用之前定义的正则表达式规则来提取关键词。
- 将提取出的关键词填充到Excel表格中。
下面是一个伪代码示例,展示了如何实现这些步骤:
import re
import PyPDF2
import openpyxl
# 打开PDF文档
pdf_file = open("论文.pdf", "rb")
pdf_reader = PyPDF2.PdfFileReader(pdf_file)
# 创建Excel工作簿
workbook = openpyxl.Workbook()
worksheet = workbook.active
# 定义正则表达式规则
pattern = r'关键词[::]?\s*([^:\n]+)(?:[::]\s*([^:\n]+))?(?:[::]\s*([^:\n]+))?(?:[::]\s*([^:\n]+))?(?:[::]\s*([^:\n]+))?(?:[::]\s*([^:\n]+))?\s*\n'
# 遍历每一页的摘要
for page_num in range(pdf_reader.numPages):
page = pdf_reader.getPage(page_num)
page_text = page.extractText()
# 使用正则表达式提取关键词
matches = re.search(pattern, page_text)
if matches:
keywords = [match.strip() for match in matches.groups() if match]
# 将关键词填充到Excel表格中
worksheet.append(keywords)
# 保存Excel文件
workbook.save("关键词.xlsx")
# 关闭PDF文件
pdf_file.close()
这个伪代码示例展示了如何自动获取PDF文档中的关键词并将其填充到Excel表格中。你可以根据自己的实际需求来调整代码,以适应不同的情况。
结论
通过构建适当的正则表达式规则,你可以轻松地从中英文混合语句中提取关键词。这在处理毕业论文或其他文档时非常有用,可以提高工作效率。希望本文对你有所帮助,祝你在处理文本数据时顺利如意!