Python正则表达式处理中日韩字符过滤全解析
Python正则表达式处理中日韩字符过滤全解析
一、核心原理:Unicode字符范围定位
中日韩字符在Unicode中的分布:
- 中文:
\u4e00-\u9fff(基本区) +\u3400-\u4dbf(扩展A区) +\U00020000-\U0002a6df(扩展B区) - 日文:
- 平假名:
\u3040-\u309f - 片假名:
\u30a0-\u30ff - 汉字:
\u4e00-\u9fbf(与中文重叠)
- 平假名:
- 韩文:
\uac00-\ud7a3(谚文音节) +\u1100-\u11ff(古韩文字母)
二、基础过滤模板
1. 简单替换示例
替换日文韩文,保留中文
import re text = "混合文本:Hello 你好 こんにちは 안녕하세요"
pattern = r"[\u3040-\u30ff\uac00-\ud7a3]"
result = re.sub(pattern, "[CJK]", text, flags=re.UNICODE)
print(result) # 混合文本:Hello 你好 [CJK][CJK][CJK][CJK][CJK] [CJK][CJK][CJK][CJK][CJK]
2. 保留空格优化版
# 使用正向前瞻断言保留空格
pattern = r"([\u3040-\u30ff\uac00-\ud7a3]+|[\u30a0-\u30ff])"
result = re.sub(pattern, "[CJK]", text, flags=re.UNICODE)print(result) # 混合文本:Hello 你好 [CJK] [CJK]
三、工业级解决方案
1. 多层级过滤系统
def cjk_filter(text, replace_char="", mode="strict"):cjk_ranges = {"basic": r"[\u3040-\u30ff\uac00-\ud7a3]","extended": r"[\u3400-\u4dbf\U00020000-\U0002a6df\u3040-\u30ff\uac00-\ud7a3\u1100-\u11ff]"}pattern = re.compile(cjk_ranges[mode], flags=re.UNICODE)return pattern.sub(replace_char, text)# 使用示例
text = "2025新版日汉字:峠 働 鱪 ♨"
print(cjk_filter(text, mode="extended")) # 输出:2025新版日汉字: ♨
2. 上下文感知过滤
# 保留英文与CJK混合词中的字母
def smart_filter(text):return re.sub(r"(?<![a-zA-Z])[\u3040-\u30ff\uac00-\ud7a3]+(?![a-zA-Z])","",text)text = "Python3.12新增了「こんにちは 」功能"
print(smart_filter(text)) # 输出:Python3.12新增了「」功能
四、性能优化方案
1. 预编译正则表达式
# 百万级文本处理提速方案
class CJKProcessor:def __init__(self):self.pattern = re.compile(r"[\u3040-\u30ff\uac00-\ud7a3]+",flags=re.UNICODE)def process(self, text):return self.pattern.sub("[CJK]", text)processor = CJKProcessor()
print(processor.process("批量处理测试:こんにちは")) # 输出:批量处理测试:[CJK]
五、特殊场景处理
1. 带注音字符处理
# 过滤日语振假名(如:漢字󠄀)
text = "振り仮名付き: 漢󠄁字"
result = re.sub(r"[\u3040-\u30ff](\uDB40[\uDC00-\uDFFF])?", "", text
)
print(result) # 输出:振り仮名付き:
2. 异体字筛选
# 保留标准中文,过滤日式汉字
def filter_variants(text):jp_kanji = r"[亜囲亙悪圧]"return re.sub(rf"({jp_kanji}|[\u3040-\u30ff])","",text)text = "日本汉字:亜 圧 vs 中文汉字:亚 压"
print(filter_variants(text)) # 输出:日本汉字: vs 中文汉字:亚 压
六、可视化调试方案
1. 匹配高亮显示
def debug_cjk(text):highlighted = re.sub(r"([\u4e00-\u9fff\u3040-\u30ff\uac00-\ud7a3])",r"\033[31m\1\033[0m",text)print(highlighted)debug_cjk("调试示例:안녕하세요 こんにちは")
# 终端显示:调试示例:[红色]안녕하세요 [红色]こんにちは
七、常见问题排查
1. 遗漏字符问题
- 现象:部分韩文字符未被过滤
- 解决方案:扩展韩文范围至
\uac00-\ud7a3(现代韩文) +\u1100-\u11ff(古韩文)
2. 性能瓶颈分析
# 测试正则表达式性能
import timeit
setup = '''
import re
text = "测试" * 100000
pattern = re.compile(r'[\u4e00-\u9fff]')
'''
print(timeit.timeit('pattern.sub("", text)', setup, number=100))
# 输出:0.87秒(1亿次替换/分钟)
通过这种系统化的过滤方案,可应对以下场景:
- 🔍 国际化网站的敏感词过滤
- 📊 多语言混合数据的清洗
- 🔒 用户输入的安全审查
- 📚 古籍文献的数字化处理
相关文章:
Python正则表达式处理中日韩字符过滤全解析
Python正则表达式处理中日韩字符过滤全解析 一、核心原理:Unicode字符范围定位 中日韩字符在Unicode中的分布: 中文:\u4e00-\u9fff(基本区) \u3400-\u4dbf(扩展A区) \U00020000-\U0002a6df…...
Zabbix 7.2实操指南:基于OpenEuler系统安装Zabbix 7.2
原文出处:乐维社区 部署环境 openEuler 22.03 LTS PHP 8.0 Apache Mysql 8.0 MySQL数据库 6.0 以上版本需要安装mysql8.0以上版本的数据库(以mysql为例子)。 欧拉系统自带 mysql8.0 的源,无需要安装额外的源。 安装mysql …...
扩展阅读-Elasticsearch 通过索引阻塞实现数据保护深入解析
目录 前言 1、索引阻塞的种类 2、什么时候使用阻塞? 场景1:进行系统维护场景。 场景2:保护数据不被随意更改场景。 场景3:优化资源使用的场景。 场景4:遵守安全规则场景。 3、添加索引阻塞API 4、解除设置 AP…...
SpringMVC重定向接口,参数暴露在url中解决方案!RedirectAttributes
OK,首先描述下业务场景,终端数量限制登录 1.首先访问项目login的get接口 2.输入账号密码点击登录后,会请求login的POST接口 3.后台对终端数量逻辑处理不允许登录跳回到登录页面 4.因代码原因需在后台进行多次重定向接口,最后跳…...
硬件学习笔记--46 电能表影响量试验梳理
目录 1.电流和电压电路中的谐波影响试验 1)电流和电压电路中谐波——第5次谐波试验 2)电流和电压电路中谐波——方顶波波形试验 3)电流和电压电路中谐波——尖顶波波形试验 4)电流和电压电路中谐…...
大数据技术之HBase操作归纳
HBase基本命令总结表(实际操作方式) 进入Hbase:hbase shell 方式一:命令行窗口来操作HBase 1.通用性命令 version 版本信息 status 查看集群当前状态 whoami 查看登入者身份 help 帮助2.HBase DDL操作(对象级操作) 2.1、namespace命名空间(相当…...
后端Java Stream数据流的使用=>代替for循环
API讲解 对比 示例代码对比 for循环遍历 package cn.ryanfan.platformback.service.impl;import cn.ryanfan.platformback.entity.Algorithm; import cn.ryanfan.platformback.entity.AlgorithmCategory; import cn.ryanfan.platformback.entity.DTO.AlgorithmInfoDTO; im…...
遗传算法与深度学习实战系列,自动调优深度神经网络和机器学习的超参数
遗传算法与深度学习实战系列文章 目录 进化深度学习生命模拟及其应用生命模拟与进化论遗传算法中常用遗传算子遗传算法框架DEAPDEAP框架初体验使用遗传算法解决N皇后问题使用遗传算法解决旅行商问题使用遗传算法重建图像遗传编程详解与实现粒子群优化详解与实现协同进化详解与…...
体验用ai做了个python小游戏
体验用ai做了个python小游戏 写在前面使用的工具2.增加功能1.要求增加视频作为背景。2.我让增加了一个欢迎页面。3.我发现中文显示有问题。4.我提出了背景修改意见,欢迎页面和结束页面背景是视频,游戏页面背景是静态图片。5.提出增加更多游戏元素。 总结…...
谷粒商城—分布式高级②.md
认证服务 1. 环境搭建 创建gulimall-auth-server模块,导依赖,引入login.html和reg.html,并把静态资源放到nginx的static目录下 2. 注册功能 (1) 验证码倒计时 //点击发送验证码按钮触发下面函数 $("#sendCode").click(function () {//如果有disabled,说明最近…...
阿里云ECS命名规则解析与规格选型实战指南
阿里云ECS实例的命名规则通常采用 “ecs.{实例族}.{规格大小}” 的结构,各部分含义如下: 命名字段说明ecs代表“弹性计算服务”(Elastic Compute Service)。{实例族}标识实例的用途和代次(如 g7、c7、r7),由字母+数字组成。{规格大小}表示实例的资源配置(如 large、2xl…...
Spring MVC 的核心以及执行流程
Spring MVC的核心 Spring MVC是Spring框架中的一个重要模块,它采用了经典的MVC(Model-View-Controller)设计模式。 MVC是一种软件架构的思想,它将软件按照模型(Model)、视图(View)…...
ai json处理提示词
在解析JSON数据时,提示词的设计需要明确任务目标、输入格式以及期望的输出格式。以下是一些常用的提示词示例,适用于不同的JSON解析场景: 1. 提取特定字段 用于从JSON中提取特定字段的值。 示例: 从以下JSON数据中提…...
2025开源数据工程全景图
作者 | Alireza Sadeghi 译自Practical Data Engineering 2025年开源数据工程领域呈现蓬勃创新与生态重构的双重态势,九大技术赛道在实时化、轻量化与云原生架构驱动下加速演进。一份来自外网的2025年开源数据工程全景图全面地展示了这一领域的发展态势与走向&…...
438. 找到字符串中所有字母异位词(LeetCode 热题 100)
题目来源: 438. 找到字符串中所有字母异位词 - 力扣(LeetCode) 题目内容: 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词的子串,返回这些子串的起始索引。不考虑答案输出的顺序。 示例 1: 输入: s &…...
c++标准io与线程,互斥锁
封装一个 File 类, 用有私有成员 File* fp 实现以下功能 File f "文件名" 要求打开该文件 f.write(string str) 要求将str数据写入文件中 string str f.read(int size) 从文件中读取最多size个字节, 并将读取到的数据返回 析构函数 #…...
java简单实现请求deepseek
1.deepseek的api创建 deepseek官网链接 点击右上API开放平台后找到API keys 创建APIkey: 注意:创建好的apikey只能在创建时可以复制,要保存好 2.java实现请求deepseek 使用springbootmaven 2.1 pom文件: <?xml version&…...
Ext系列文件系统 -- 磁盘结构,磁盘分区,inode,ext文件系统,软硬链接
目录 1.理解硬盘 1.1 磁盘、服务器、机柜、机房 1.2 磁盘物理结构 1.3 磁盘的存储结构 1.4 磁盘的逻辑结构 1.4.1 理解逻辑结构 1.4.2 真实过程 1.5 CHS地址和LBA地址的相互转换 2.引入文件系统 2.1 “块”概念 2.2 “分区”概念 2.3 “inode”概念 3.ext2文件系…...
PyTorch Tensor 形状变化操作详解
PyTorch Tensor 形状变化操作详解 在深度学习中,Tensor 的形状变换是非常常见的操作。PyTorch 提供了丰富的 API 来帮助我们调整 Tensor 的形状,以满足模型输入、计算或数据处理的需求。本文将详细介绍 PyTorch 中常见的 Tensor 形状变换操作࿰…...
文字识别软件cnocr学习笔记
• 安装 pip install cnocr • 基础的使用方法 首次运行会下载安装模型,如果没有梯子,会报错: 在网络上查找cnocr的模型资源,并下载到本地。https://download.csdn.net/download/qq_33464428/89514689?ops_request_misc%257B%2…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
NPOI Excel用OLE对象的形式插入文件附件以及插入图片
static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...
