Excel数据脱敏利器:自动保留格式的智能脱敏脚本
源码:
import openpyxl
import re
import random
import string
from openpyxl.utils import get_column_letter
from copy import copy
from tqdm import tqdmdef mask_data(value):"""脱敏处理数据"""if isinstance(value, str):if value.strip() == "":return value# 保留数字格式if re.match(r'^\d+$', value):return ''.join(random.choice('0123456789') for _ in value)# 保留字母格式elif re.match(r'^[a-zA-Z]+$', value):return ''.join(random.choice(string.ascii_letters) for _ in value)else:return ''.join(random.choice(string.ascii_letters + string.digits) for _ in value)elif isinstance(value, (int, float)):return random.randint(0, 999999)return valuedef mask_sheet_name(name):"""脱敏处理sheet名称"""if len(name) == 0:return "Sheet_" + ''.join(random.choice(string.ascii_uppercase) for _ in range(3))return ''.join(random.choice(string.ascii_uppercase) for _ in name)def mask_excel_file(input_path, output_path):"""主函数:处理Excel文件"""# 加载工作簿wb = openpyxl.load_workbook(input_path)# 创建新工作簿new_wb = openpyxl.Workbook()new_wb.remove(new_wb.active) # 移除默认创建的sheet# 处理每个工作表for sheet in tqdm(wb.worksheets, desc="处理工作表中", unit="sheet"):# 创建新sheet并重命名new_sheet = new_wb.create_sheet(title=mask_sheet_name(sheet.title))# 复制样式和数据for row in tqdm(sheet.iter_rows(), desc=f"处理{sheet.title}的行", unit="row", leave=False):for cell in row:if cell.__class__.__name__ == 'MergedCell':continuenew_cell = new_sheet.cell(row=cell.row, column=cell.column, value=mask_data(cell.value))if cell.has_style:new_cell.font = copy(cell.font)new_cell.border = copy(cell.border)new_cell.fill = copy(cell.fill)new_cell.number_format = cell.number_formatnew_cell.protection = copy(cell.protection)new_cell.alignment = copy(cell.alignment)# 复制列宽for col in sheet.columns:new_sheet.column_dimensions[get_column_letter(col[0].column)].width = \sheet.column_dimensions[get_column_letter(col[0].column)].width# 保存新工作簿new_wb.save(output_path)print(f"脱敏完成,结果已保存到: {output_path}")if __name__ == "__main__":# 直接设置输入输出文件路径input_file = r"待脱敏数据.xlsx" # 修改为您需要的输入文件路径output_file = "测试-脱敏结果.xlsx" # 修改为您需要的输出文件路径mask_excel_file(input_file, output_file)
📝 备注:
该数据脱敏脚本采用openpyxl库实现Excel文件的全自动化处理,具备三大特色能力:
- 智能数据识别 - 根据内容类型(纯数字/字母/混合)生成格式匹配的随机值,如"13812345678"转为"59175032816"
- 格式无损保留 - 完美继承原文件样式(字体/边框/对齐方式/数值格式)和列宽配置
- 深度脱敏机制 - 同步处理工作表名称,自动生成随机sheet名(如"Report"转为"XKQ")
- 可视化进度 - 通过tqdm进度条直观展示每个sheet和每行数据的处理进度
工具支持批量处理.xlsx文件,仅需指定输入输出路径即可生成符合GDPR标准的脱敏文档,适用于测试环境搭建、数据共享等隐私保护场景。
相关文章:
Excel数据脱敏利器:自动保留格式的智能脱敏脚本
源码: import openpyxl import re import random import string from openpyxl.utils import get_column_letter from copy import copy from tqdm import tqdmdef mask_data(value):"""脱敏处理数据"""if isinstance(value, str):i…...

Photoshop2025(PS2025)软件及安装教程
在数字图像编辑领域,Adobe Photoshop 一直是无可争议的王者。如今,Photoshop 2025 重磅登场,再次为我们带来了惊喜与变革,进一步巩固了它在行业中的领先地位。 Photoshop 2025 在人工智能方面的升级令人瞩目。其全新的 “Magic Se…...

AI赋能开源:如何借助MCP快速解锁开源项目并提交你的首个PR
引子 很多同学都梦想为开源项目贡献力量,然而现实往往是——面对庞大复杂的项目,从入门到提交第一个有实质性代码的PR,时间跨度可能长达数年。传统路径通常是先从文档贡献开始,逐步深入理解项目架构,最终才能进行代码…...
计算机视觉---GT(ground truth)
在计算机视觉(Computer Vision, CV)领域,Ground Truth(GT,中文常译为“真值”或“ ground truth”) 是指关于数据的真实标签或客观事实,是模型训练、评估和验证的基准。它是连接算法与现实世界的…...
SQL进阶之旅 Day 9:高级索引策略
【SQL进阶之旅 Day 9】高级索引策略 在SQL查询性能调优中,索引是最为关键的优化手段之一。Day 3我们已经介绍了基础索引类型,今天我们将深入探讨高级索引策略,包括覆盖索引、索引选择性分析、强制使用索引等实用技巧。这些技术能显著提升复杂…...

R 语言科研绘图第 52 期 --- 网络图-分组
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...

姜老师的MBTI课程:MBTI是可以转变的
我们先来看内向和外向这条轴,I和E内向和外向受先天遗传因素的影响还是比较大的,因为它事关到了你的硬件,也就是大脑的模型。但是我们在大五人格的排雷避坑和这套课程里面都强调了一个观点,内向和外向各有优势,也各有不…...

Django【应用 02】第一个Django应用开发流程图
第 1 部分 安装 Django创建项目初始化应用配置视图、路由 第 2 部分 数据库配置语言和时区配置应用设置表初始化模型创建、激活、表创建管理员账号创建应用加入管理页面 第 3 部分 更多视图(添加模板及模板调用、render、get_object_or_404、去除模板里的硬编码…...
湖北理元理律师事务所:用科学规划重塑债务人生
在债务问题日益普遍的当下,如何平衡还款压力与生活质量成为社会性难题。湖北理元理律师事务所通过“债务优化生活保障”的双轨服务模式,为债务人构建可持续的解决方案。其核心逻辑在于:债务处置不是剥夺生活,而是重建财务秩序。 …...
《江西棒球资讯》棒球运动发展·棒球1号位
联赛体系结构 | League Structure MLB模式 MLB采用分层体系(大联盟、小联盟),强调梯队建设和长期发展。 MLB operates a tiered system (Major League, Minor League) with a focus on talent pipelines and long-term development. 中国现…...
华为OD机试_2025 B卷_静态扫描(Python,100分)(附详细解题思路)
题目描述 静态扫描可以快速识别源代码的缺陷,静态扫描的结果以扫描报告作为输出: 1、文件扫描的成本和文件大小相关,如果文件大小为N,则扫描成本为N个金币 2、扫描报告的缓存成本和文件大小无关,每缓存一个报告需要…...

python打卡训练营打卡记录day41
知识回顾 数据增强卷积神经网络定义的写法batch归一化:调整一个批次的分布,常用与图像数据特征图:只有卷积操作输出的才叫特征图调度器:直接修改基础学习率 卷积操作常见流程如下: 1. 输入 → 卷积层 → Batch归一化层…...

GD32F103系列工程模版创建记录
准备条件: 1:首先需要下载GD32F103的官方库 2:GD32F103的软件包 3:KEIL5软件 4:单片机GD32F103C8T6 本文已经默认KEIL5已将安装好GD32F103的软件包了 步骤一 基本模版创建 1 打开KEIL5软件,新建工程&am…...

PH热榜 | 2025-05-24
1. Chance AI: Visual Reasoning 标语:通过视觉推理模型即时进行可视化搜索 介绍:Chance AI 是你的视觉小助手——只需拍一张照片,就能揭示你所看到事物背后的故事。通过我们全新的视觉推理功能,它不仅能识别物体,还…...
《高等数学》(同济大学·第7版) 的 详细章节目录
上册 第一章 函数与极限 映射与函数 数列的极限 函数的极限 无穷小与无穷大 极限运算法则 极限存在准则 两个重要极限 无穷小的比较 函数的连续性与间断点 连续函数的运算与初等函数的连续性 闭区间上连续函数的性质 🔹 重点节: 2-3ÿ…...

能源领域新兴技术论坛:EMQ 实时数据引擎构建工业智能中枢
5 月 26 日,由沙特阿美亚洲公司主办的能源领域新兴技术论坛在上海顺利举行。本次论坛聚焦智能工厂、无人机与机器人、可靠性与完整性、先进材料四大技术赛道,吸引了来自全球的能源企业、技术供应商及行业专家。 作为业内知名的 MQ AI 实时数据与智能产…...

kafka 常用知识点
文章目录 前言kafka 常用知识点1. kafka 概念2. 消息共享和广播3. 分区和副本数量奇偶数 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。 而且听说点赞的人每天的运气都不会太差࿰…...

Vue 核心技术与实战day07
1. vuex概述 2. 构建 vuex [多组件数据共享] 环境 <template><div id"app"><h1>根组件- {{ title }}- {{ count }}</h1><input :value"count" input"handleInput" type"text"><Son1></Son1>…...
关于5090安装tensorrt(python api)的过程
前提条件 硬件5090 ubuntu24.04 cuda版本12.8 找到适配的tensorrt版本 Nvidia官网 完事了之后找到对应版本tar安装包 tar -xvzf tensorrt-你的安装包.tar 然后记得将路径加入到环境变量中 #在这里插入代码片 gedit ~/.bashrc # 添加 export PATH/PATH/To/TensorRT-你的按安…...
[蓝桥杯]分考场
题目描述 nn 个人参加某项特殊考试。 为了公平,要求任何两个认识的人不能分在同一个考场。 求是少需要分几个考场才能满足条件。 输入描述 输入格式: 第一行,一个整数 nn (1≤n≤1001≤n≤100),表示参加考试的人数。 第二行…...

CSS专题之层叠上下文
前言 石匠敲击石头的第 15 次 在平常开发的时候,有时候会遇到使用 z-index 调整元素层级没有效果的情况,究其原因还是因为对层叠上下文不太了解,看了网上很多前辈的文章,决定打算写一篇文章来梳理一下,如果哪里写的有问…...

Nginx基础篇(Nginx目录结构分析、Nginx的启用方式和停止方式、Nginx配置文件nginx.conf文件的结构、Nginx基础配置实战)
文章目录 1. Nginx目录结构分析1.1 conf目录1.2 html目录1.3 logs目录1.4 sbin目录 2. Nginx的启用方式和停止方式2.1 信号控制2.1.1 信号2.1.2 调用命令 2.2 命令行控制2.2.1 基础操作类2.2.2 配置测试类2.2.3 进程控制类2.2.4 路径与文件类2.2.5 高级配置类 3. Nginx配置文件…...

Kafka 的 ISR 机制深度解析:保障数据可靠性的核心防线
在 Kafka 的消息处理体系中,数据的可靠性和高可用性是至关重要的目标。而 ISR(In-Sync Replicas,同步副本)机制作为 Kafka 实现这一目标的关键技术,在消息复制、故障容错等方面发挥着核心作用。接下来,我们…...

移动安全Android——客户端静态安全
一、反编译保护 测试工具 Jadx GitHub - skylot/jadx: Dex to Java decompiler PKID [下载]PKID-APP查壳工具-Android安全-看雪-安全社区|安全招聘|kanxue.com 测试流程 (1)通过Jadx对客户端APK文件进行反编译,观察是否进行代码混淆 &…...
LeetCode 1524. 和为奇数的子数组数目
好的!让我们详细解释 LeetCode 1524. 和为奇数的子数组数目 这道题的思路和解法。 题目: https://leetcode.cn/problems/number-of-sub-arrays-with-odd-sum/description/ 题目分析 问题描述: 给定一个整数数组 arr,返回其中和…...

Redis最佳实践——安全与稳定性保障之连接池管理详解
Redis 在电商应用的连接池管理全面详解 一、连接池核心原理与架构 1. 连接池工作模型 #mermaid-svg-G7I3ukCljlJZAXaA {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-G7I3ukCljlJZAXaA .error-icon{fill:#552222;}…...

核心机制三:连接管理(三次握手)
核心机制一:确认应答 > 实现可靠传输的核心 接受方给发送方返回"应答报文"(ack) 1)发送方能够感知到对方是否收到 2)如果对方没有收到,发送方采取措施 序号按照字节编排 (连续递增) 确认序号按照收到数据的最后一个字节序号 1 核心机制二:超时重传 > 产生丢包…...
HarmonyOS DevEco Testing入门教程
一、DevEco Testing体系架构 分层测试框架 单元测试层:支持JS/TS/ArkTS语言的JUnit风格测试 UI测试层:基于XCTest框架扩展的视觉化测试工具 云测平台:集成华为云真机调试实验室 核心测试能力 分布式测试引擎:支持跨设备协同测…...

记录一次apisix上cros配置跨域失败的问题
安全要求不允许跨域请求,但是业务侧由于涉及多个域名,并且需要共享cookie,所以需要配置跨域。 在apisix上配置了cors如下。 结果安全漏扫还是识别到了跨域请求的漏洞。 调试了cors.lua的插件脚本,发现apisix上是如果不在allowOri…...
Spring Data Redis 实战指南
Spring Data Redis 核心特性 Spring Data Redis 是基于 Redis 的 NoSQL 内存数据结构存储解决方案,为 Spring 应用程序提供与 Redis 交互的高级抽象层。其核心架构设计体现了对现代应用需求的深度适配,主要技术特性可归纳为以下维度: 数据结构支持体系 作为多模型数据存储…...