当前位置: 首页 > news >正文

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正则表达式处理中日韩字符过滤全解析 一、核心原理&#xff1a;Unicode字符范围定位 中日韩字符在Unicode中的分布&#xff1a; 中文&#xff1a;\u4e00-\u9fff&#xff08;基本区&#xff09; \u3400-\u4dbf&#xff08;扩展A区&#xff09; \U00020000-\U0002a6df…...

Zabbix 7.2实操指南:基于OpenEuler系统安装Zabbix 7.2

原文出处&#xff1a;乐维社区 部署环境 openEuler 22.03 LTS PHP 8.0 Apache Mysql 8.0 MySQL数据库 6.0 以上版本需要安装mysql8.0以上版本的数据库&#xff08;以mysql为例子&#xff09;。 欧拉系统自带 mysql8.0 的源&#xff0c;无需要安装额外的源。 安装mysql …...

扩展阅读-Elasticsearch 通过索引阻塞实现数据保护深入解析

目录 前言 1、索引阻塞的种类 2、什么时候使用阻塞&#xff1f; 场景1&#xff1a;进行系统维护场景。 场景2&#xff1a;保护数据不被随意更改场景。 场景3&#xff1a;优化资源使用的场景。 场景4&#xff1a;遵守安全规则场景。 3、添加索引阻塞API 4、解除设置 AP…...

SpringMVC重定向接口,参数暴露在url中解决方案!RedirectAttributes

OK&#xff0c;首先描述下业务场景&#xff0c;终端数量限制登录 1.首先访问项目login的get接口 2.输入账号密码点击登录后&#xff0c;会请求login的POST接口 3.后台对终端数量逻辑处理不允许登录跳回到登录页面 4.因代码原因需在后台进行多次重定向接口&#xff0c;最后跳…...

硬件学习笔记--46 电能表影响量试验梳理

目录 1.电流和电压电路中的谐波影响试验 1&#xff09;电流和电压电路中谐波——第5次谐波试验 2&#xff09;电流和电压电路中谐波——方顶波波形试验 3&#xff09;​​​​​​​电流和电压电路中谐波——尖顶波波形试验 4&#xff09;​​​​​​​电流和电压电路中谐…...

大数据技术之HBase操作归纳

HBase基本命令总结表(实际操作方式) 进入Hbase&#xff1a;hbase shell 方式一&#xff1a;命令行窗口来操作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.我提出了背景修改意见&#xff0c;欢迎页面和结束页面背景是视频&#xff0c;游戏页面背景是静态图片。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框架中的一个重要模块&#xff0c;它采用了经典的MVC&#xff08;Model-View-Controller&#xff09;设计模式。 MVC是一种软件架构的思想&#xff0c;它将软件按照模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;…...

ai json处理提示词

在解析JSON数据时&#xff0c;提示词的设计需要明确任务目标、输入格式以及期望的输出格式。以下是一些常用的提示词示例&#xff0c;适用于不同的JSON解析场景&#xff1a; 1. 提取特定字段 用于从JSON中提取特定字段的值。 示例&#xff1a; 从以下JSON数据中提…...

2025开源数据工程全景图

作者 | Alireza Sadeghi 译自Practical Data Engineering 2025年开源数据工程领域呈现蓬勃创新与生态重构的双重态势&#xff0c;九大技术赛道在实时化、轻量化与云原生架构驱动下加速演进。一份来自外网的2025年开源数据工程全景图全面地展示了这一领域的发展态势与走向&…...

438. 找到字符串中所有字母异位词(LeetCode 热题 100)

题目来源&#xff1a; 438. 找到字符串中所有字母异位词 - 力扣&#xff08;LeetCode&#xff09; 题目内容&#xff1a; 给定两个字符串 s 和 p&#xff0c;找到 s 中所有 p 的 异位词的子串&#xff0c;返回这些子串的起始索引。不考虑答案输出的顺序。 示例 1: 输入: s &…...

c++标准io与线程,互斥锁

封装一个 File 类&#xff0c; 用有私有成员 File* fp 实现以下功能 File f "文件名" 要求打开该文件 f.write(string str) 要求将str数据写入文件中 string str f.read(int size) 从文件中读取最多size个字节&#xff0c; 并将读取到的数据返回 析构函数 #…...

java简单实现请求deepseek

1.deepseek的api创建 deepseek官网链接 点击右上API开放平台后找到API keys 创建APIkey&#xff1a; 注意&#xff1a;创建好的apikey只能在创建时可以复制&#xff0c;要保存好 2.java实现请求deepseek 使用springbootmaven 2.1 pom文件&#xff1a; <?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 形状变化操作详解 在深度学习中&#xff0c;Tensor 的形状变换是非常常见的操作。PyTorch 提供了丰富的 API 来帮助我们调整 Tensor 的形状&#xff0c;以满足模型输入、计算或数据处理的需求。本文将详细介绍 PyTorch 中常见的 Tensor 形状变换操作&#xff0…...

文字识别软件cnocr学习笔记

• 安装 pip install cnocr • 基础的使用方法 首次运行会下载安装模型&#xff0c;如果没有梯子&#xff0c;会报错&#xff1a; 在网络上查找cnocr的模型资源&#xff0c;并下载到本地。https://download.csdn.net/download/qq_33464428/89514689?ops_request_misc%257B%2…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

Go语言多线程问题

打印零与奇偶数&#xff08;leetcode 1116&#xff09; 方法1&#xff1a;使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...