请问各位大佬,咨询一下如何根据要处理的中英文混合语句 构建正则表达式规则的问题

2023-09-12 15:53:55 +08:00
 Takizawa
op 由于工作需要,要处理本科毕业生的毕业论文上报 jyb 抽检。需要将学生的论文 pdf 文档中的摘要里面的关键词提取出来,再填充到 excel 表格里面。学生的关键词情况示例如下:

关键词:Python 多线程 目标检测 Python Flask 框架

其中,
( 1 )关键词后面的冒号,有的学生没有,有的学生有
( 2 )关键词最多 6 个,有的学生可能只有 3 个
( 3 )关键词之间有 1-4 个空格
( 4 )关键词的最后结束应该是换行符\n ,这个不确定,我查了资料应该是换行符。

请问规则该怎么写呢?
417 次点击
所在节点    问与答
2 条回复
lDqe4OE6iOEUQNM7
2023-09-12 16:42:22 +08:00
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("未匹配到关键词")
Takizawa
2023-09-12 16:57:04 +08:00
@James2099 谢谢大佬。其实还有个关键问题就是,我是需要一个一个打开本地目录的 pdf 文件,再从里面拿到“关键词:Python 多线程 目标检测 Python Flask 框架”这句话,然后再做提取分割的。请问怎么自动拿到这句话啊?也就是怎么生成最开始 text 这个变量?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/973057

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX