Python使用正则表达式实现文本替换的方法


Posted in Python onApril 18, 2017

本文实例讲述了Python使用正则表达式实现文本替换的方法。分享给大家供大家参考,具体如下:

2D客户端编程从某种意义上来讲就是素材组织,所以,图片素材组织经常需要批量处理,python一定是最佳选择,不管是win/linux/mac都有一个简单的运行环境

举两个应用场景

① 如果不是在某个文件夹里面则将文件夹名称插入前面

② 所有的文件名名称加上一个前缀

直接看代码吧:

# encoding: UTF-8
import re
# 将正则表达式编译成Pattern对象
p = re.compile(r'(?P<folder>(\w+/)*)(?P<filename>\w+\.png)')
# 使用Pattern匹配文本,获得匹配结果,无法匹配时将返回None
#match = pattern.match('<key>xxx/duobaojiemian_L/yangpizi.png</key>')
the_str = """<key>XXXX/duobaojiemian2222_L/duobaojiemian_L/yangpizi.png</key>
 <key>yangpizi2.png</key>
 <key>yangpizi3.png</key> """
for m in p.finditer(the_str):
 # 使用Match获得分组信息
 print m.groupdict()
print '-------------------------------'
#f = lambda m: m.group().find('XXXX/') == -1 and 'XXXX/'+m.group() or m.group()
def f(m):
 s = m.group()
 return s.find('XXXX/') == -1 and 'XXXX/'+s or s
def f2(m2):
 d = m2.groupdict()
 return d['folder']+'the_'+d['filename']
print p.sub(f2, the_str)

关于正则表达式有几个需要交代的

①. python的正则表达式如果捕获需要分组则使用这个语法(?P<命名>匹配的正则表达式)

②. re.compile用于编译正则表达式并返回对象

③. p.finditer返回所有匹配的迭代器

④. p.sub将匹配项传入回调函数,并且用返回值替换文本

⑤. m.groupdict,可以使用则的分组命名取相应的值

Python 相关文章推荐
使用python实现正则匹配检索远端FTP目录下的文件
Mar 25 Python
使用Python脚本来获取Cisco设备信息的示例
May 04 Python
详谈Python基础之内置函数和递归
Jun 21 Python
使用Python批量修改文件名的代码实例
Jan 24 Python
python 设置输出图像的像素大小方法
Jul 04 Python
Python实现K折交叉验证法的方法步骤
Jul 11 Python
Python字符串格式化输出代码实例
Nov 22 Python
Python多线程获取返回值代码实例
Feb 17 Python
TensorFlow实现批量归一化操作的示例
Apr 22 Python
Python多个装饰器的调用顺序实例解析
May 22 Python
Python内存泄漏和内存溢出的解决方案
Sep 26 Python
python 算法题——快乐数的多种解法
May 27 Python
Python外星人入侵游戏编程完整版
Mar 30 #Python
Python随机数用法实例详解【基于random模块】
Apr 18 #Python
django使用图片延时加载引起后台404错误
Apr 18 #Python
使用Python3制作TCP端口扫描器
Apr 17 #Python
Python实现将一个大文件按段落分隔为多个小文件的简单操作方法
Apr 17 #Python
Python的时间模块datetime详解
Apr 17 #Python
Python中标准模块importlib详解
Apr 16 #Python
You might like
php上传文件并显示上传进度的方法
2015/03/24 PHP
PHP正则表达式过滤html标签属性(DEMO)
2016/05/04 PHP
round robin权重轮循算法php实现代码
2016/05/28 PHP
PHP删除数组中特定元素的两种方法
2019/02/28 PHP
php中目录操作opendir()、readdir()及scandir()用法示例
2019/06/08 PHP
关于JavaScript的gzip静态压缩方法
2007/01/05 Javascript
关于恒等于(===)和非恒等于(!==)
2007/08/20 Javascript
JS window.opener返回父页面的应用
2009/10/24 Javascript
改变javascript函数内部this指针指向的三种方法
2010/04/23 Javascript
jquery 学习之二 属性 文本与值(text,val)
2010/11/25 Javascript
读jQuery之十四 (触发事件核心方法)
2011/08/23 Javascript
jQuery之ajax技术的详细介绍
2013/06/19 Javascript
jquery事件与函数的使用介绍
2013/09/29 Javascript
使用JQ来编写最基本的淡入淡出效果附演示动画
2014/10/31 Javascript
js简单实现标签云效果实例
2015/08/06 Javascript
常用的JQuery函数及功能小结
2016/03/24 Javascript
jquery获取img的src值的简单实例
2016/05/17 Javascript
浅谈Angularjs link和compile的使用区别
2016/10/21 Javascript
Bootstrap实现的标签页内容切换显示效果示例
2017/05/25 Javascript
JavaScript定义函数_动力节点Java学院整理
2017/06/27 Javascript
使用async、enterproxy控制并发数量的方法详解
2018/01/02 Javascript
详解Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成)
2019/04/20 Javascript
vue项目中使用eslint+prettier规范与检查代码的方法
2020/01/16 Javascript
[00:49]完美世界DOTA2联赛10月28日开团时刻:随便打
2020/10/29 DOTA
Python 正则表达式操作指南
2009/05/04 Python
Python中AND、OR的一个使用小技巧
2015/02/18 Python
python 换位密码算法的实例详解
2017/07/19 Python
matplotlib绘图实例演示标记路径
2018/01/23 Python
Pandas 同元素多列去重的实例
2018/07/03 Python
python编程进阶之异常处理用法实例分析
2020/02/21 Python
Python创建自己的加密货币的示例
2021/03/01 Python
HTML5文档结构标签
2017/04/21 HTML / CSS
澳大利亚和新西兰最大的在线旅行社之一:Aunt Betty
2019/08/07 全球购物
应届生骨科医生求职信
2013/10/31 职场文书
2019教师的学习计划
2019/06/25 职场文书
人物搭配车车超萌联名预备中 【咒术迴战】 ⨯ 【天竺鼠车车】 展开合作
2022/04/11 日漫