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的类实例属性访问规则探讨
Jan 30 Python
python使用xlrd实现检索excel中某列含有指定字符串记录的方法
May 09 Python
解决Django模板无法使用perms变量问题的方法
Sep 10 Python
Python实现正则表达式匹配任意的邮箱方法
Dec 20 Python
python对绑定事件的鼠标、按键的判断实例
Jul 17 Python
python实现拼接图片
Mar 23 Python
keras 多任务多loss实例
Jun 22 Python
使用darknet框架的imagenet数据分类预训练操作
Jul 07 Python
python如何实现读取并显示图片(不需要图形界面)
Jul 08 Python
python各种excel写入方式的速度对比
Nov 10 Python
pygame面向对象的飞行小鸟实现(Flappy bird)
Apr 01 Python
详解python网络进程
Jun 15 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快递单号查询接口使用示例
2014/05/05 PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
2014/09/12 PHP
Yii框架引入coreseek分页功能示例
2019/02/08 PHP
PHP文件打开关闭及读写操作示例解析
2020/08/06 PHP
Prototype使用指南之dom.js
2007/01/10 Javascript
ext checkboxgroup 回填数据解决
2009/08/21 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
2015/02/06 Javascript
JavaScript控制listbox列表框的项目上下移动的方法
2015/03/18 Javascript
深入分析JSON编码格式提交表单数据
2015/06/25 Javascript
JavaScript数组合并的多种方法
2016/05/22 Javascript
js改变css样式的三种方法推荐
2016/06/28 Javascript
从零开始学习Node.js系列教程二:文本提交与显示方法
2017/04/13 Javascript
从零开始学习Node.js系列教程四:多页面实现的数学运算示例
2017/04/13 Javascript
jquery animate动画持续运动的实例
2017/11/29 jQuery
详解webpack中的hash、chunkhash、contenthash区别
2018/01/05 Javascript
vue 2.x 中axios 封装的get 和post方法
2018/02/28 Javascript
js动态引入的四种方法
2018/05/05 Javascript
VUE+Element环境搭建与安装的方法步骤
2019/01/24 Javascript
Python实现的归并排序算法示例
2017/11/21 Python
Python科学画图代码分享
2017/11/29 Python
用Pycharm实现鼠标滚轮控制字体大小的方法
2019/01/15 Python
计算机二级python学习教程(2) python语言基本语法元素
2019/05/16 Python
PyCharm 创建指定版本的 Django(超详图解教程)
2019/06/18 Python
使用python获取(宜宾市地震信息)地震信息
2019/06/20 Python
关于python导入模块import与常见的模块详解
2019/08/28 Python
python模块常用用法实例详解
2019/10/17 Python
django为Form生成的label标签添加class方式
2020/05/20 Python
Python如何使用正则表达式爬取京东商品信息
2020/06/01 Python
如何在 Matplotlib 中更改绘图背景的实现
2020/11/26 Python
屈臣氏菲律宾官网:Watsons菲律宾
2020/06/30 全球购物
工艺工程师岗位职责
2014/03/04 职场文书
小学公民道德宣传日活动总结
2015/03/23 职场文书
2015年社区民政工作总结
2015/04/21 职场文书
员工工作表扬信
2015/05/05 职场文书
升学宴家长致辞
2015/07/27 职场文书
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技