基于《PythonCookbook》的学习(5)—— 查找和替换文本
来源:互联网 发布:武警待遇 知乎 编辑:程序博客网 时间:2024/06/05 16:12
对字符串中的文本做查找和替换
1、对于简单的文本模式,使用 str.replace() 即可。
In [1]: text = 'yeah, but no, but yeah, but no, but yeah'In [2]: text.replace('yeah', 'yep')Out[2]: 'yep, but no, but yep, but no, but yep'
2、对于复杂的模式,使用 re 模块中的 sub() 函数。
In [3]: text = 'Today is 11/27/2012. PyCon starts 3/13/2013.'In [4]: import reIn [5]: re.sub(r'(\d+)/(\d+)/(\d+)',r'\3-\1-\2',text)Out[5]: 'Today is 2012-11-27. PyCon starts 2013-3-13.'
sub() 中的第一个参数是要匹配的模式,第2个参数是要替换上的模式。
类似“\3” 这样的是代表着模式中捕获组的数量。
如果打算执行相同的重复替换,可以先将模式编译以获得更好的性能。
In [7]: pattern = re.compile(r'(\d+)/(\d+)/(\d+)')In [8]: pattern.sub(r'\3-\1-\2',text)Out[8]: 'Today is 2012-11-27. PyCon starts 2013-3-13.'
3、对于更复杂的替换,可以传递一个回调函数来替代
In [11]: from calendar import month_abbrIn [12]: def change_date(m): ...: mon_name = month_abbr[int(m.group(1))] ...: return '{} {} {}'.format(m.group(2), mon_name, m.group(3)) ...:In [13]: pattern.sub(change_date, text)Out[13]: 'Today is 27 Nov 2012. PyCon starts 13 Mar 2013.'
calendar.month_abbr
一个数组,表示当前语言环境中一年的缩写月份。 这符合1月份的正常惯例为1号,所以它的长度为13,而month_abbr [0]
是空字符串。
替换回调函数的输入参数是一个匹配对象,由match()
或 find()
返回。 用 .group()
方法来提取匹配中的特定的部分。
如果还想知道替换的过程中,一共完成了多少次替换,可以使用 re.subn()
。
re.subn(pattern, repl, string, count=0, flags=0)
执行与sub()
相同的操作,但返回一个元组(new_string,number_of_subs_made)
。
In [14]: nexttext, n = pattern.subn(change_date, text)In [15]: nexttextOut[15]: 'Today is 27 Nov 2012. PyCon starts 13 Mar 2013.'In [16]: nOut[16]: 2
0 0
- 基于《PythonCookbook》的学习(5)—— 查找和替换文本
- 基于《PythonCookbook》的学习(6)——以不区分大小写的方式对文本做查找和替换
- 基于《PythonCookbook》的学习(4)—— 文本模式的匹配和查找
- 基于《PythonCookbook》的学习(2)——在字符串的卡头或结尾做文本匹配
- 基于《PythonCookbook》的学习(1)——针对任意多的分隔符拆分字符串
- 基于《PythonCookbook》的学习(3)——利用 Shell 通配符做字符串匹配
- 0003-MFC--文本的查找和替换
- 一个查找替换文本的例子(C#实现)
- 查找替换文本内容
- PythonCookBook-数据结构和算法
- Linux文本处理命令--cut分割文件和sed查找替换的运用
- Creo二次开发:查找和替换指定文件夹下的所有工程图中的注释文本
- java源码——对文件内容的查找和替换(开始写界面咯)
- string 的一些用法——插入(insert)、删除(erase)、替换(replace)和查找(find)
- emacs的查找和替换
- VIM的查找和替换
- string的查找和替换
- java学习总结(16.05.25)eclipse的查找和替换功能 Ctrl+F
- 像素鸟(flapybird)的简单实现
- iOS 关于应用内跳转的问题
- 笔记本安装win10后 无线网卡驱动无法安装 问题的解决
- Apache Kylin介绍
- android WindowManager动画问题
- 基于《PythonCookbook》的学习(5)—— 查找和替换文本
- 清除浮动
- k8s高可用和ingress
- MyBatis的配置文件
- Unity3D研究院之使用 C#合成解析XML与JSON(四十一)
- IO-移动文件
- 使用AppUploader上传ipa文件到APPstore
- 1.4 逆序一个栈
- 正则表达式-java