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实现sublime3的less编译插件示例
Apr 27 Python
python基础教程之缩进介绍
Aug 29 Python
python实现挑选出来100以内的质数
Mar 24 Python
横向对比分析Python解析XML的四种方式
Mar 30 Python
Python有序字典简单实现方法示例
Sep 28 Python
Python使用numpy实现BP神经网络
Mar 10 Python
python3对拉勾数据进行可视化分析的方法详解
Apr 03 Python
使用Python实现跳帧截取视频帧
May 31 Python
pytorch随机采样操作SubsetRandomSampler()
Jul 07 Python
python调用百度API实现人脸识别
Nov 17 Python
python中的对数log函数表示及用法
Dec 09 Python
python中numpy数组与list相互转换实例方法
Jan 29 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 数组教程 定义数组
2009/10/23 PHP
PHP 基本语法格式
2009/12/15 PHP
smarty模板中拼接字符串的方法
2014/02/14 PHP
PHP获取当前完整URL地址的函数
2014/12/21 PHP
PHP7 新特性详细介绍
2016/09/06 PHP
Ubuntu中支持PHP5与PHP7双版本的简单实现
2018/08/19 PHP
Jquery 的outerHeight方法使用介绍
2013/09/11 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/20 Javascript
jquery单行文字向上滚动效果的实现代码
2014/09/05 Javascript
jQuery基于扩展实现的倒计时效果
2016/05/14 Javascript
JS针对浏览器窗口关闭事件的监听方法集锦
2016/06/24 Javascript
整理一下常见的IE错误
2016/11/18 Javascript
微信小程序(六):列表上拉加载下拉刷新示例
2017/01/13 Javascript
Angular使用$http.jsonp发送跨站请求的方法
2017/03/16 Javascript
BootStrap 获得轮播中的索引和当前活动的焦点对象
2017/05/11 Javascript
Underscore之Array_动力节点Java学院整理
2017/07/10 Javascript
解决vue里碰到 $refs 的问题的方法
2017/07/13 Javascript
p5.js入门教程之键盘交互
2018/03/19 Javascript
[52:15]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS LGD-GAMING
2014/05/23 DOTA
Python发送email的3种方法
2015/04/28 Python
实例讲解Python设计模式编程之工厂方法模式的使用
2016/03/02 Python
Pycharm学习教程(5) Python快捷键相关设置
2017/05/03 Python
对python中的高效迭代器函数详解
2018/10/18 Python
Keras 中Leaky ReLU等高级激活函数的用法
2020/07/05 Python
Python2手动安装更新pip过程实例解析
2020/07/16 Python
简单了解python关键字global nonlocal区别
2020/09/21 Python
详解利用python识别图片中的条码(pyzbar)及条码图片矫正和增强
2020/11/17 Python
CSS3 倾斜的网页图片库实例教程
2009/11/14 HTML / CSS
CSS3的常见transformation图形变化用法小结
2016/05/13 HTML / CSS
斯洛伐克时尚服装网上商店:Cellbes
2016/10/20 全球购物
家庭户外服装:Hawkshead
2017/11/02 全球购物
Fanatics官网:运动服装、球衣、运动装备
2020/10/12 全球购物
教师找工作推荐信
2013/11/23 职场文书
财务务虚会发言材料
2014/10/20 职场文书
2016国培研修心得体会
2016/01/08 职场文书
MySQL表类型 存储引擎 的选择
2021/11/11 MySQL