You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python在TXT或RTF文件中实现关键词彩色高亮标注

实现方案说明

首先明确:纯文本(.txt)本身不内置格式存储能力,无法在常规文本编辑器中直接显示颜色。你可以根据使用场景二选一:

  • 仅在终端/支持ANSI转义码的程序中查看:输出带ANSI控制字符的txt文件
  • 需要在Word/系统记事本等通用编辑器中看到高亮效果:输出RTF格式文件

方案1:输出带ANSI高亮的TXT文件

适用场景:仅在终端、VS Code等支持ANSI转义的工具中查看内容
直接用转义码包裹匹配到的关键词即可,示例代码:

import re

def highlight_keywords_in_txt(input_path, output_path, keywords, highlight_color='\033[93m\033[101m'):
    # 默认高亮样式:黄字红底,可自行修改ANSI码调整颜色
    reset_format = '\033[0m'
    # 读取原文件内容
    with open(input_path, 'r', encoding='utf-8') as f:
        content = f.read()
    # 正则匹配所有关键词,不区分大小写可加re.IGNORECASE参数
    pattern = re.compile('|'.join(re.escape(k) for k in keywords))
    highlighted_content = pattern.sub(lambda match: f"{highlight_color}{match.group()}{reset_format}", content)
    # 写入新文件
    with open(output_path, 'w', encoding='utf-8') as f:
        f.write(highlighted_content)

# 调用示例
if __name__ == "__main__":
    # 替换为你的实际文件路径、需要高亮的关键词
    highlight_keywords_in_txt(
        input_path="原文件.txt",
        output_path="高亮后.txt",
        keywords=["目标词1", "目标词2", "目标词3"]
    )

注:该方案生成的txt在普通Windows记事本中打开会显示乱码字符,仅支持ANSI转义的工具可正常显示高亮效果

方案2:输出带高亮的RTF文件(通用推荐)

RTF格式原生支持颜色、高亮等样式,所有主流文本/办公编辑器都可以正常识别显示效果,不需要第三方依赖,直接拼接RTF格式标记即可实现,示例代码:

import re

def highlight_keywords_to_rtf(input_txt_path, output_rtf_path, keywords, highlight_rgb=(255,255,0)):
    # 默认高亮颜色为黄色,可自行修改RGB值调整高亮色
    r, g, b = highlight_rgb
    # RTF文件头定义:声明编码、颜色表
    rtf_header = rf'''{{\rtf1\ansi\deff0
{{\colortbl;\red{r}\green{g}\blue{b};}}
'''
    rtf_footer = '}'
    # 读取原TXT内容,转义RTF特殊字符
    with open(input_txt_path, 'r', encoding='utf-8') as f:
        content = f.read()
    # 转义RTF保留字符
    content = content.replace('\\', '\\\\').replace('{', '\\{').replace('}', '\\}').replace('\n', '\\par\n')
    # 正则匹配关键词
    pattern = re.compile('|'.join(re.escape(k) for k in keywords))
    # 给匹配到的关键词加高亮标记
    highlighted_content = pattern.sub(lambda match: rf'\cb1 {match.group()}\cb0 ', content)
    # 拼接完整RTF内容
    full_rtf = rtf_header + highlighted_content + rtf_footer
    # 写入RTF文件
    with open(output_rtf_path, 'w', encoding='utf-8') as f:
        f.write(full_rtf)

# 调用示例
if __name__ == "__main__":
    highlight_keywords_to_rtf(
        input_txt_path="原文件.txt",
        output_rtf_path="高亮结果.rtf",
        keywords=["目标词1", "目标词2", "目标词3"],
        highlight_rgb=(255,200,200) # 这里可以自定义高亮的RGB颜色
    )

该方案兼容性最好,生成的RTF文件可以在Windows记事本、Word、WPS等所有常用软件中正常显示高亮效果,不需要额外安装依赖,兼容Python3.9.7版本

内容的提问来源于stack exchange,提问作者Pablo Carrero Garcia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 16:06:05