如果我想批量匹配多个关键字(超过10个,且分行保存在keyword.txt中),将匹配的关键字关键句保存在result.docx中,且关键字高亮,我该如何修改代码?

import re
 
# 定义文本和关键词
with open('file1.txt', 'r') as f:
    text = f.read()
with open('file2.txt', 'r') as f:
    text = f.read()
with open('file3.txt', 'r') as f:
    text = f.read()

keyword = "keyword"
 
# 使用正则表达式查找所有含有关键词的句子
pattern = r'[^.]*' + keyword + r'[^.]*'
sentences = re.findall(pattern, text)
 
# 打印结果
print(sentences)

如果我想批量匹配多个关键字(超过10个,且分行保存在keyword.txt中),将匹配的关键字关键句保存在result.docx中,且关键字高亮,我该如何修改代码?

读取word需要 python-docx 等专门的库,不能用 open 直接打开。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    首先,我们需要读取关键字文件(keyword.txt)中的关键字,并将其保存在一个列表中。接下来,我们需要打开待处理的文档(result.docx),并读取其中的内容。然后,我们可以使用Python的字符串处理功能,比如正则表达式,来匹配关键字并进行高亮显示。最后,我们将匹配到的关键句保存到result.docx文档中。

    下面是实现该功能的代码示例:

    import re
    from docx import Document
    
    # 读取关键字文件
    keyword_list = []
    with open('keyword.txt', 'r') as file:
        keyword_list = file.read().splitlines()
    
    # 打开待处理的文档
    document = Document('result.docx')
    
    # 遍历文档的段落
    for paragraph in document.paragraphs:
        # 匹配关键字并进行高亮显示
        for keyword in keyword_list:
            # 使用正则表达式进行匹配
            pattern = re.compile(r'\b' + keyword + r'\b')
            matches = re.finditer(pattern, paragraph.text)
    
            # 遍历匹配结果,并进行高亮显示
            for match in matches:
                # 创建一个新的Run对象,并设置高亮颜色
                run = paragraph.add_run()
                run.text = match.group()
                run.font.highlight_color = WD_COLOR_INDEX.YELLOW
    
    # 保存修改后的文档
    document.save('result.docx')
    

    请注意,该代码需要python-docx包和docx包,你可以使用下述命令安装它们:

    pip install python-docx
    pip install docx
    

    如果你没有安装pip,你可以参考这个链接来安装它。

    此外,请确保你的keyword.txt文件和result.docx文件与代码在同一目录下。如果不是,请修改相关文件路径。

    希望这个解决方案能够帮到你!如果你有任何问题,请随时提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^