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

可信的昆明网站建设多个网站对比表格怎么做

可信的昆明网站建设,多个网站对比表格怎么做,哈尔滨工程造价信息网,自助建站seoPython正则替换终极指南:用re.sub玩转字符串魔法 一、为什么re.sub是文本处理的瑞士军刀? 在Python的re模块中,re.sub()的周下载量突破5800万次(2025年PyPI数据),它实现了: 📍 模…

Python正则替换终极指南:用re.sub玩转字符串魔法

一、为什么re.sub是文本处理的瑞士军刀?

在Python的re模块中,re.sub()的周下载量突破5800万次(2025年PyPI数据),它实现了:

  • 📍 模式匹配替换
  • 📍 动态内容生成
  • 📍 批量文本清洗
  • 📍 结构化数据转换

二、基础篇:5分钟掌握核心用法

1. 函数原型剖析

re.sub(pattern, repl, string, count=0, flags=0)
  • pattern:正则表达式模式(字符串或编译后的模式对象)
  • repl:替换内容(字符串或回调函数)
  • string:原始输入字符串
  • count:最大替换次数(0表示全部替换)
  • flags:匹配模式(如忽略大小写re.IGNORECASE

2. 基础替换示例

import re # 替换所有数字为*
text = "订单号:AB2025 金额:1500元"
result = re.sub(r"\d", "*", text)
print(result)  # 订单号:AB**** 金额:****元 # 限制替换次数 
text = "1-2-3-4-5"
result = re.sub(r"-", ":", text, count=2)
print(result)  # 1:2:3-4-5 

以下案例均要添加 import re

三、进阶篇:解锁三大高阶技巧

1. 分组捕获与反向引用

\1 代表匹配的第1项,\2代表匹配的第2项,以此类推

# 重组日期格式(YYYY/MM/DD → DD-MM-YYYY)
text = "2025/02/20 → 2026/03/21"
result = re.sub(r"(\d{4})/(\d{2})/(\d{2})", r"\3-\2-\1", text)
print(result)  # 20-02-2025 → 21-03-2026 # 给手机号加掩码 
text = "联系电话:13812345678"
result = re.sub(r"(\d{3})\d{4}(\d{4})", r"\1****\2", text)
print(result)  # 联系电话:138****5678 

2. 动态回调函数

# 数学表达式升级(数字扩大1000倍)
def multiply(match):num = float(match.group(1))return str(num * 1000)text = "重量0.5kg 长度1.2m"
result = re.sub(r"(\d+\.?\d*)", multiply, text)
print(result)  # 重量500.0kg 长度1200.0m 

3. 命名分组与复杂替换

# 处理国际化日期格式
text = "Date: 02/20/2025 (MM/DD/YYYY)"
result = re.sub(r"(\d{2})/(\d{2})/(\d{4})",r"\3年\2月\1日",text
)
print(result)  # Date: 2025年02月20日 (MM/DD/YYYY)

四、工业级最佳实践

1. 性能优化方案

\b:匹配一个单词边界。

# 预编译正则模式(处理百万级文本时提速3倍)
pattern = re.compile(r"\b\d{6}\b")  # 匹配6位纯数字
text = "邮政编码:100001 200002"
result = pattern.sub("[邮编]", text)
print(result)  # 邮政编码:[邮编] [邮编]

2. 处理多语言文本

中日韩字符过滤(2025年新增unicode扩展区支持)
# 预编译正则表达式(工业级推荐)
cjk_pattern = re.compile(r"([\u4e00-\u9fff\u3400-\u4dbf]|"  # 中文r"[\u3040-\u309F\u30A0-\u30FF]|"  # 日文r"[\uAC00-\uD7A3\u1100-\u11FF])+",  # 韩文flags=re.UNICODE
)text = "2025新版:漢字 かな 전자문서"
result = cjk_pattern.sub("[CJK]", text)
print(result)  # 输出:2025[CJK]:[CJK] [CJK] [CJK]

如果不过滤中文:

cjk_pattern = re.compile(r"([\u3040-\u309F\u30A0-\u30FF]|"  # 日文r"[\uAC00-\uD7A3\u1100-\u11FF])+",  # 韩文flags=re.UNICODE
)text = "2025新版:漢字 かな 전자문서"
result = cjk_pattern.sub("[CJK]", text)
print(result)  # 2025新版:漢字 [CJK] [CJK]

3. 安全替换策略

# 防御正则注入攻击
def safe_sub(pattern, repl, text):escaped_pattern = re.escape(pattern)return re.sub(escaped_pattern, repl, text)user_input = "恶意输入[a-z].*"
text = "重要数据:abc123"
result = safe_sub(user_input, "", text)  # 原样输出
print(result)  # 重要数据:abc123

五、三大实战应用场景

1. 数据清洗管道

def clean_log(text):rules = [(r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}", "[IP]"),  # 隐藏IP (r"\d{2}:\d{2}:\d{2}", "[TIME]"),               # 隐藏时间 (r"password=\w+", "password=")              # 脱敏密码 ]for pattern, repl in rules:text = re.sub(pattern, repl, text)return text 

2. 模板引擎开发

template = "欢迎{name}!您的订单{order_id}已发货"
context = {"name": "张三", "order_id": "20250220"}def render(tpl, data):return re.sub(r"{(\w+)}",lambda m: str(data.get(m.group(1), "")), tpl )print(render(template, context))  # 欢迎张三!您的订单20250220已发货 

3. Markdown转换器

def markdown_to_html(text):text = re.sub(r"### (.+)", r"\1", text)  # 三级标题 text = re.sub(r"!\[(.*?)\]\((.*?)\)", r'', text)return text 
http://www.dtcms.com/wzjs/589372.html

相关文章:

  • eclipse的开发网站开发wordpress 地理位置签到
  • 网站推广的工具( )广西网站建设工具
  • 先备案还是先做网站网站见建设
  • 做动态二维码的网站沈阳祥云男科
  • 邢台开发区网站网站建设客户来源
  • php制作网站seo快速排名服务
  • 网站设计的能力要求安福县住房和城乡建设局网站
  • 我买了一个备案网站 可是公司注销了搜索引擎营销方案例子
  • 客户网站加一个功能 应该怎么做女性广告
  • 合肥建设集团招聘信息网站深圳高端包装盒设计
  • 高端定制网站设计公司o2o网站建设效果
  • 垂直网站做益智类问答商城系统网站模板
  • 制作网站时搜索图标如何做南山制作网站
  • 运城 网站 建设 招聘电子商城网站开发公司
  • 腾冲市住房和城乡建设局网站网易企业邮箱是什么
  • 网站开发客户个人网站页面
  • 鞍山网站wordpress print_r
  • 建行网站首页登录网上银行单页面网站有哪些内容
  • 网站设计制造wordpress设置新窗口打开链接
  • 网站建站网站制作公司国内ui做的好的网站有哪些
  • 乐清高端网站建设seo工作内容和薪资
  • 网站建设是什么语言小制作小发明手工图片
  • 东莞市外贸网站建设平台专业做pc+手机网站
  • 苍南县规划建设局网站广告设计app免费
  • 在线直播网站开发实战项目科技公司网页图片
  • 河北省建设机械会网站网络营销企业有哪些公司
  • 无锡找做网站公司网站经营性备案难不难
  • 教程网网站源码php福州住房建设厅网站
  • 海南响应式网站建设哪里好杭州两网建设
  • 网站建设中html下载重庆网站建设价格费用