Python高亮文本中的关键词

Python 批量标注 docx 关键词:跨 run 高亮与文档处理实战 文档自动化处理中,Word 文档并非纯文本,而是由段落、run 和 OOXML 结构组成;关键词可能被拆散在多个 run 中,直接字符串匹配容易漏标。基于 python-docx 读取 docx 后合并段落文本并建立字符映射,再按 run 边界拆分与回写高亮,可在保留原格式的前提下完成跨 run 匹配与标注。这类方案的技术价值在于把人工翻查合同、报告等长文档的重复劳动转化为可批量执行的脚本流程,并兼顾格式保真和异常处理。它适用于法务、行政、编辑、运营等批量文档处理场景,也可作为 python-docx 操作 阅读详情

print

全部高亮

w = '比赛'
t = '比赛开始没多久就结束了比赛,现在没有比赛'

def replace_color(text, word):
    new_word = '\033[031m' + word + '\033[0m'  # red
    len_w = len(word)
    len_t = len(text)
    for i in range(len_t - len_w, -1, -1):
        if text[i: i + len_w] == word:
            text = text[:i] + new_word + text[i + len_w:]
    return text

print(t)
print(replace_color(t, w))

单个高亮

from jieba import tokenize

text = '我用小米手机订购了一袋小米'
entity = '小米'

replace_color = lambda word: '\033[033m' + word + '\033[0m'
replace_word = lambda sentence, word, head, tail: sentence[:head] + word + sentence[tail:]

for word, head, tail in tokenize(text):
    if word == entity:
        word = replace_color(word)
        print(replace_word(text, word, head, tail))

mysql高亮查询

def highlight(self, field, table, keyword, n=99):
    sql = "SELECT %s FROM %s WHERE INSTR(%s,'%s')>0;" % (field, table, field, keyword)
    for i in self.fetchone(sql, n):
        text = i[0]
        highlight_word = '\033[031m' + keyword + '\033[0m'  # red
        len_w = len(keyword)
        len_t = len(text)
        for i in range(len_t - len_w, -1, -1):
            if text[i: i + len_w] == keyword:
                text = text[:i] + highlight_word + text[i + len_w:]
        print(text)

存html

  • py文件
def replace_html_tag(text, word):
    new_word = '<font color="red">' + word + '</font>'
    len_w = len(word)
    len_t = len(text)
    for i in range(len_t - len_w, -1, -1):
        if text[i: i + len_w] == word:
            text = text[:i] + new_word + text[i + len_w:]
    return text


def save_html(ls_of_ls, prefix):
    fname = prefix + '.html'
    with open(fname, 'w', encoding='utf-8') as f:
        f.write('<html><head><meta charset="UTF-8"></head><body><table border="1">\n')
        for ls in ls_of_ls:
            f.write('<tr>')
            for i in ls:
                f.write('<td><font size="4">{}</font></td>'.format(i))
            f.write('</tr>\n')
        f.write('</table></body></html>')


texts = ['深扣菊花舔指笑', '菊花菊花一闪闪', '接天莲叶无穷碧', '硬日菊花别样红']
word = '菊花'

ls_of_ls = []
for text in texts:
    ls_of_ls.append([word, replace_html_tag(text, word)])
save_html(ls_of_ls, word)
  • 生成的html代码
<html><head><meta charset="UTF-8"></head><body><table border="1">
<tr><td><font size="4">菊花</font></td><td><font size="4">深扣<font color="red">菊花</font>舔指笑</font></td></tr>
<tr><td><font size="4">菊花</font></td><td><font size="4"><font color="red">菊花</font><font color="red">菊花</font>一闪闪</font></td></tr>
<tr><td><font size="4">菊花</font></td><td><font size="4">接天莲叶无穷碧</font></td></tr>
<tr><td><font size="4">菊花</font></td><td><font size="4">硬日<font color="red">菊花</font>别样红</font></td></tr>
</table></body></html>
  • html展示
菊花深扣菊花舔指笑
菊花菊花菊花一闪闪
菊花接天莲叶无穷碧
菊花硬日菊花别样红

存excel

xlsxwriter

from xlsxwriter.workbook import Workbook
import re

# 创建Excel对象
workbook = Workbook('a.xlsx')
worksheet = workbook.add_worksheet()
color = workbook.add_format({'color': 'red', 'bold': True})

# 日期高亮
rc = re.compile('([0-9年月日]{2,})')
sentence = '小洪和小黄2020年1月12日母校初见。1月26日长烟落日孤城闭,2月9日神仙眷侣云比心'
format_ls = rc.split(sentence)
for i in range(len(format_ls)-1, -1, -1):
    if rc.fullmatch(format_ls[i]):
        format_ls.insert(i, color)  # Prefix the word with the format
print(format_ls)

# 写入单元格
row, col = 2, 1
worksheet.write_rich_string(row, col, *format_ls)
workbook.close()

xlwings

from pandas import DataFrame
from jieba import tokenize
from xlwings import App

def ner(text):
    for clause in text.split(','):  # 切句
        for word, head, tail in tokenize(clause):  # 分词+位置
            if word in {'小米', '苹果'}:  # NER
                yield (
                    text,
                    clause[:head] + '【' + word + '】' + clause[tail:],
                    word,
                )

def lss2excel(ls_of_ls, columns, fname):
    DataFrame(ls_of_ls, columns=columns).to_excel(fname, index=False)

def merge_cells(fname):
    # 打开excel
    app = App(add_book=False, visible=False)
    # 关闭警告
    app.display_alerts = False
    # 打开book
    book = app.books.open(fname)
    try:
        # 打开sheet
        for sheet in book.sheets:
            # 当前区域
            current_region = sheet.cells(1, 1).current_region
            current_region.column_width = 12  # 列宽
            current_region.api.Font.Size = 9  # 字体格式
            current_region.api.WrapText = True  # 换行
            current_region.api.HorizontalAlignment = 1  # 垂直上靠
            current_region.api.VerticalAlignment = -4160  # 水平左靠
            # 最后一个单元格(的行)
            last_row_index = current_region.last_cell.row
            # 合并单元格
            i = 2
            while i < last_row_index:
                for j in range(i + 1, last_row_index + 2):
                    if sheet.cells(i, 1).value != sheet.cells(j, 1).value:
                        cells = sheet.range('A{}:A{}'.format(i, j - 1)).api
                        cells.MergeCells = True  # 合并
                        cells.WrapText = True  # 换行
                        i = j
            # 背景色
            sheet.range('A1:C1').api.Interior.Color = 65535
    except Exception as e:
        print('\033[031m{}\033[0m'.format(e))
    # 开启警告
    app.display_alerts = True
    # 保存
    book.save()
    # 关闭excel
    app.quit()

fname = 'phone.xlsx'
fields = ['text', 'clause', 'word']
texts = ['买小米机,送了袋小米和苹果', '诺基亚', '买华为送苹果']
ls_of_ls = [i for text in texts for i in ner(text)]
lss2excel(ls_of_ls, fields, fname)
merge_cells(fname)

TLSv1.0与TLSv1.1安全漏洞深度解析与实战修复指南 本文深度解析TLSv1.0与TLSv1.1的安全漏洞,包括POODLE和BEAST攻击原理,并提供实战修复指南。通过禁用老旧协议、配置安全加密套件和网络层防护措施,有效提升系统安全性。文章还针对无法立即升级的场景,给出了补偿性防御方案,帮助管理员全面应对传输层安全风险。 阅读详情

相关推荐

jQuery 版本怎么选?别一上来就用最新版,老项目里这个坑很常见

jQuery 是一个封装好的 JavaScript 函数库,简称 JQ它的核心理念是jQuery 有 1.x、2.x、3.x 三个主要版本系列2.0 以上版本不再支持 IE6、IE7、IE8版本选择不能只看“新不新”,而要看项目兼容性和实际需求.min.js是压缩版文件,生产环境常用使用 jQuery 前必须先通过<script>正确引入基本就是没引入或引入失败可以快速绑定点击事件.animate()可以快速实现动画效果,但定位属性要设置好。

Web安全工具库 402

Python批量修改Word文档中特定关键字的颜色

关于Word文件的大致结构请参考使用Python写入docx文件并控制字体颜色代码功能:读取docx文档中的文字,在尽量不影响原来字体样式的情况下,只把特定的文字都修改为红色。表格中的文字...

董付国的Python专栏 1756

IGBT模块封装中的银烧结技术:为什么特斯拉和比亚迪都在用这种黑科技?

本文深入解析了IGBT模块封装中的银烧结技术,揭示了其作为功率半导体封装工艺关键升级的原因。该技术通过低温烧结形成高熔点、高导热导电的银连接层,显著提升了模块的功率循环寿命、散热能力和高温工作稳定性,这正是特斯拉、比亚迪等行业巨头采用此项黑科技以释放电动汽车电驱系统极致性能的核心所在。

yhn4567890的博客 834

python实现批量word关键字标注

【代码】python实现批量word关键字标注。

raojjunjie的博客 753

深度学习 tesorflow2.0版本 入门第一章

为什么要学tensflow 深度学习发展迅猛 框架灵活 google开发 公司应用广泛 2.0更加灵活 后面会学习的项目 图像分类 房价预测 泰坦尼克号生存预测 文本分类 文本生成 机器翻译 核心部分 模型训练 tesorboard----> 查看模型训练进度 模型保存和部署 分布式训练-----> 加速训练速度,提升训练效率 TensorFlow常用库:Tfds, tfhub,tensor2tensor 多平台云端环境GPU:Goolgle cloud环境配置,AWS环境配置 kaggle平

weixin_46969441的博客 1238

西门子S7-1200与汇川SV660F伺服Profinet通讯调试实战

在工业自动化领域,Profinet作为工业以太网标准协议,凭借其高实时性和灵活组网能力,已成为伺服驱动器与PLC通讯的主流选择。其核心原理是通过设备名识别、IP分配以及标准报文(如111速度报文、105定位报文)传输控制字与状态字,实现驱动器的精准控制。相比传统脉冲或CANOpen方案,Profinet直连省去了协议转换网关,降低了成本与故障点,尤其适用于绕线设备、包装机械等中小型单轴或多轴运动控制系统。本文以西门子S7-1200 PLC搭配汇川SV660F伺服为例,完整梳理了从GSDMD组态、InoDri

weixin_29184371的博客 233

N111_python高亮显示word指定文字(多关键词)

【代码】N111_python高亮显示word指定文字(多关键词)

qq_41577262的博客 917

两种方法解决这个问题OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.

两种方法解决这个问题OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.在进行深度学习比如在训练yolov8模型时,在加载训练集和验证集时会报以下那个错误时会导致模型训练中断,有以下两个方法去解决这个问题,来使模型正常训练。

weixin_73044854的博客 2万+

pycharm 黄色(黄字)高亮警告 Default argument value is mutable 原因及解决办法(mutable 可变对象与 immutable不可变对象)

示例: 参考文章:使用mutable对象作为Python函数参数默认值潜在的危害(Default argument is mutable)

Dontla的博客 6323

PLC期末速成——顺序功能图转梯形图

一、根据顺序功能图写出梯形图程序 顺序功能图: 梯形图: 1、程序段1,系统运行标志M0.0的启-保-停控制电路。 2、程序段2,PLC上电与逆行,初始化脉冲M1.0激活初始化步M2.0。 3、程序段3,当M2.0初始化步为活动步,并且M0.0系统运行标志位为1时,置位M2.1步,复位M2.0步。 4、当M2.1为活动步,并且I0.3中液位传感器为1时,置位M2.2步,复位M2.1步。 5、程序段5,当M2.2为活动步,并且I0.2高液位传感器为1时,置位M2.3步,复位M2.2步。 6、程序段

qq_52251819的博客 1万+

告别‘小爱同学’:用ESP32-S3和esp-sr SDK,从零打造一个离线语音助手(含完整代码)

本文详细介绍了如何利用ESP32-S3芯片和esp-sr SDK从零构建一个离线语音助手,涵盖硬件选型、声学设计、SDK配置及低功耗优化等关键步骤。通过实战案例和完整代码,帮助开发者实现自定义唤醒词和命令词,打造低成本、高隐私的本地语音控制解决方案。

weixin_29041195的博客 372

pycharm报黄提示(黄色高亮警告):non-default parameter follows default parameter(定义时将没有默认值的参数放到了有默认值参数的后面)

今天看QWidget源码的时候,看见里面有个参数被pycharm用红色波浪线标注,鼠标移动到上面,显示: non-default parameter follows default parameter 原因是定义时将没有默认值的参数放到了有默认值参数的后面,默认参数值必须放在必选参数值后面 虽然如此,但毕竟是别人写好的源码,我不好改它,况且使用起来也没有遇到什么问题,,,, 参考文章:pytho...

Dontla的博客 2096

Qt C++ HTTP 调用通义千问大模型 X 学术论文润色工具(SCI 格式适配)

请求地址:`https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation`;| Windows | 打包时携带 `Qt6Network.dll`/`libcrypto-1_1-x64.dll` 等依赖;| Linux | 安装 `libssl-dev` 和 `libcurl4-openssl-dev`;| API 调用失败 | 检查 API-KEY 是否有效;

寒寒豆豆软件公司的博客 104

python修改命令行字符颜色

本文的实验环境是 Python 3.6.1 |Anaconda 4.4.0 (64-bit),Win10 知识储备 如何修改命令行中字体颜色? print("\033[显示方式; 前景色; 背景色m") 具体的描述可以参考文章 《python_控制台输出带颜色的文字方法》。 经实测,效果不是特别稳定,在有的机器上可以跑通,有的机器上却不行。 在 Python 3.x 中,使用 colorama 模块实现对控制台字体颜色的改变。 经实测,效果稳定。例子如下,运行效果如图1所示。 imp.

一万年太久,只争朝夕 1405

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

关键词查找并标注出来

同目录下: keyword.txt 小风扇,抹布,一次性,杯子 import os from io import BytesIO # 数据输入输出包 import numpy as np list =["网红迷你小风扇大风超静音","竹子纤维抹布五支家庭装","一次性洗脸巾","玻璃杯子"] keyword_name ="mark_keywords.txt" def mark_keyword(keyword_name,list): new_list = [] #print(li.

logan2015的博客 563

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Python实现Word文档自动化处理与关键词高亮

文档自动化处理是现代办公效率提升的关键技术,其核心原理是通过编程接口解析文档结构并执行批量操作。Python作为自动化脚本的首选语言,结合python-docx库可以直接操作Word文档的XML结构,实现包括文本查找、格式修改等复杂操作。正则表达式匹配技术在此过程中起到关键作用,支持精确或模糊查找特定内容。这种技术方案在法律合同审查、学术论文标注等场景具有显著价值,能大幅减少人工操作时间。本文演示的Word文档关键词高亮方案,通过优化run对象处理机制,既保证了格式稳定性,又实现了亚秒级的批量处理速度。

weixin_30768881的博客 218

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

chatgpt赋能python:在Python中如何填充颜色

填充颜色是指将特定区域或对象的颜色填充为另一种颜色。它在图像处理中非常常见,可以用于高亮显示特定区域或添加视觉效果。在Python中,我们可以使用Pillow库的相关函数来完成这项任务。本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。🧡AI职场汇报智能办公文案写作效率提升教程 🧡专注于AI+职场+办公方向。

qq_45562973的博客 692

PyAhoCorasick:高效字符串匹配库的使用指南

PyAhoCorasick 是一个基于 Python 的高效字符串查找库,它利用 Aho-Corasick 算法来实现多模式匹配。该算法能够一次性搜索文本中多个关键词的位置,特别适用于日志分析、关键词高亮、信息检索等场景。由 Wojciech Mula 开发并维护,此库以简洁的 API 提供了高性能的字符串匹配功能,极大提升了处理文本数据的效率。 ## 项目快速启动 要快速启动使用 PyAho...

gitblog_00109的博客 714

Python re库在数据清洗中的5个实战技巧

在分析不同来源的数据时,经常会遇到日期格式不统一的问题。这里可以使用re.findall()配合简单的模式匹配,比如寻找'5星'、'五星'这样的关键词。更复杂的场景中,还可以用正则表达式识别评分相关的上下文,比如'我给这个产品打4分'这样的表述。我们可以先用re.compile()预编译一个包含所有关键词的正则表达式,然后使用re.sub()将这些词替换为带有HTML标记的版本,实现可视化高亮。不需要复杂的环境配置,就能把处理前后的数据对比实时展示出来,对于需要快速验证数据处理逻辑的场景非常方便。

OnyxPanther23的博客 550

如何用Rich实现终端日志分析:提升Python日志可读性的终极指南

Rich是一个Python库,专为终端中的富文本和美观格式化而设计。它能将普通的终端日志转换为色彩鲜明、结构清晰的可视化输出,让开发者能够更快速地识别关键信息和异常情况。本文将介绍如何利用Rich的日志分析功能,让你的终端日志变得更加直观和易于理解。 ## Rich日志分析的核心优势 Rich提供了一系列强大的功能,让终端日志分析变得更加高效和愉悦。这些核心优势包括: ### 色彩编码与语法

gitblog_02304的博客 531

设计租房合同条款自查工具,输入合同文本,自动标注霸王条款(如不退押金,乱涨房租),给出修改建议,保护租客权益,操作简单,输出清晰标注版合同。

highlighted = highlighted.replace(r["sentence"], f"{color}[风险:{r['risk']}]{r['sentence']}{reset}")"suggestion": "建议明确违约金比例,并注明不可抗力情况下的免责条款。"suggestion": "建议区分自然损耗(房东负责)与使用损坏(租客负责)。"keyword": "提前解除合同需支付违约金","keyword": "房东有权随时调整租金","keyword": "房屋维修由租客承担",

2301_82202864的博客 473

QT/PyQT/PySide 通过富文本形式实现关键词高亮

对文本进行转义,以确保字符的兼容性。然后,针对每个关键词,我们使用正则表达式进行替换操作,将匹配到的关键词用。QT中的文本浏览器可以设置成HTML的富文本格式,可以解析HTML语法,从而实现关键词高亮。因为本质上都是QT,所以我标题带了QT,这个思路是没问题的,就是用C++得换个语言。在HTML中,如果想让一个词apple变成红色,只需将原文本由apple替换为。这里在文本格式化类中实现了一个高亮函数,来高亮指定的关键词。进行替换操作,将匹配到的关键词替换为。来匹配指定单词,并且在替换时通过。

一只博客 1433

用 ​​jieba​​​ 和 ​​wordfreq​​ 对英文文章进行关键词提取并高亮

要使用 jieba 和 wordfreq 对英文文章进行关键词提取并高亮,同时为高亮词提供读音和最贴近上下文含义的解释,可以按照以下步骤进行。下面提供一个完整的 Python 示例,涵盖了关键词提取、高亮显示、读音获取和定义解释。步骤概述安装必要的库加载和预处理英文文本使用 jieba 进行分词利用 wordfreq 计算...

qq_35485206的博客 996

Python 在Word中查找并高亮指定文本

本文提供了示例代码介绍如何使用Python在Word中查找并突出显示所有指定的文本,以及如何仅查找并突出显示第一个匹配的文本。

Eiceblue的专栏 1827

使用 Python 查找并高亮 Word 文档中的文本

在处理长篇 Word 文档时,快速定位关键信息并将其突出显示是一项非常实用的技能。无论是审阅合同中的特定条款、标记技术文档中的关键术语,还是在学术论文中强调重要概念,掌握文本查找和高亮技术都能显著提高工作效率。本文将深入探讨如何使用 Python 实现多种场景下的 Word 文档文本查找与高亮功能。

2503_93068783的博客 622

使用 Python 自动查找并高亮 Word 文档中的文本

在处理 Word 文档时,很多用户经常需要查找并高亮特定文本。这在审核大型报告、标记关键词或批量处理文档时非常有用。手动查找和高亮既耗时又容易出错,因此使用 Python 自动化这个过程不仅能节省大量时间,还能保证文档处理的一致性和准确性。

SunnyDays1011的博客 543
上一篇: Python网络编程:手写生成html表格
下一篇: python【自写】命名元组【杂耍自用】
小基基o_O
博客等级 码龄9年 4414粉丝 467原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值