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中非常实用的一些功能和函数分享
Feb 14 Python
详解Python中的正则表达式的用法
Apr 09 Python
在DigitalOcean的服务器上部署flaskblog应用
Dec 19 Python
Python之re操作方法(详解)
Jun 14 Python
python中hashlib模块用法示例
Oct 30 Python
Python zip()函数用法实例分析
Mar 17 Python
python保存数据到本地文件的方法
Jun 23 Python
Django中使用Celery的方法示例
Nov 29 Python
python字符串替换第一个字符串的方法
Jun 26 Python
python实现集中式的病毒扫描功能详解
Jul 09 Python
python实例化对象的具体方法
Jun 17 Python
Visual Studio Code搭建django项目的方法步骤
Sep 17 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
Optimizer与Debugger兼容性问题的解决方法
2008/12/01 PHP
Yii2.0表关联查询实例分析
2016/07/18 PHP
laradock环境docker-compose操作详解
2019/07/29 PHP
PHP手机号码及邮箱正则表达式实例解析
2020/07/11 PHP
JavaScript多线程的实现方法
2007/05/08 Javascript
js getBoundingClientRect() 来获取页面元素的位置
2010/11/25 Javascript
Javascript继承机制的设计思想分享
2011/08/28 Javascript
深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
2012/01/15 Javascript
打开新窗口关闭当前页面不弹出关闭提示js代码
2013/03/18 Javascript
jQuery 回车事件enter使用示例
2014/02/18 Javascript
jquery scroll()区分横向纵向滚动条的方法
2014/04/04 Javascript
jQuery+PHP实现微信转盘抽奖功能的方法
2016/05/25 Javascript
Bootstrap Table使用整理(五)之分页组合查询
2017/06/09 Javascript
浅谈JS封闭函数、闭包、内置对象
2017/07/18 Javascript
浅析从vue源码看观察者模式
2018/01/29 Javascript
Vue组件中slot的用法
2018/01/30 Javascript
微信小程序全局变量功能与用法详解
2019/01/22 Javascript
微信公众号服务器验证Token步骤图解
2019/12/30 Javascript
js实现飞机大战游戏
2020/08/26 Javascript
[01:13:01]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第三场
2018/04/05 DOTA
flask框架视图函数用法示例
2018/07/19 Python
对Python subprocess.Popen子进程管道阻塞详解
2018/10/29 Python
python 删除字符串中连续多个空格并保留一个的方法
2018/12/22 Python
详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决
2019/04/17 Python
python3使用GUI统计代码量
2019/09/18 Python
Python迭代器模块itertools使用原理解析
2019/12/11 Python
tensorflow使用CNN分析mnist手写体数字数据集
2020/06/17 Python
如何在Win10系统使用Python3连接Hive
2020/10/15 Python
Python项目实战之使用Django框架实现支付宝付款功能
2021/02/23 Python
HTML5页面音视频在微信和app下自动播放的实现方法
2016/10/20 HTML / CSS
应届生体育教师自荐信
2013/10/03 职场文书
列车长先进事迹材料
2014/01/25 职场文书
私人委托书格式
2014/09/10 职场文书
安全承诺书
2015/01/19 职场文书
laravel添加角色和模糊搜索功能的实现代码
2021/06/22 PHP
MySQL系列之七 MySQL存储引擎
2021/07/02 MySQL