一、你想在字符串中搜索和匹配指定的文本模式

遗漏点:re模块其实也是帮助我们进行字符串处理的重要工具,我之前总是想着用内建的函数来处理,其实如果是复杂的文本和数据结构,re模块能帮助我们处理很多信息。

对于简单的字面模式,直接使用 str.replace() 方法即可,比如:

>>> text = 'yeah, but no, but yeah, but no, but yeah'

>>> text.replace('yeah', 'yep')

'yep, but no, but yep, but no, but yep'

>>>

对于复杂的模式,请使用 re 模块中的 sub() 函数。 为了说明这个,假设你想将形式为 11/27/2012 的日期字符串改成 2012-11-27 。示例如下:

>>> text = 'Today is 11/27/2012. PyCon starts 3/13/2013.'

>>> import re

>>> re.sub(r'(\d+)/(\d+)/(\d+)', r'\3-\1-\2', text)

'Today is 2012-11-27. PyCon starts 2013-3-13.'

二、你需要以忽略大小写的方式搜索与替换文本字符串

为了在文本操作时忽略大小写,你需要在使用 re 模块的时候给这些操作提供 re.IGNORECASE 标志参数。比如:

>>> text = 'UPPER PYTHON, lower python, Mixed Python'

>>> re.findall('python', text, flags=re.IGNORECASE)

['PYTHON', 'python', 'Python']

>>> re.sub('python', 'snake', text, flags=re.IGNORECASE)

'UPPER snake, lower snake, Mixed snake'

最后的那个例子揭示了一个小缺陷,替换字符串并不会自动跟被匹配字符串的大小写保持一致。 为了修复这个,你可能需要一个辅助函数,就像下面的这样:

def matchcase(word):

def replace(m):

text = m.group()

if text.isupper():

return word.upper()

elif text.islower():

return word.lower()

elif text[0].isupper():

return word.capitalize()

else:

return word

return replace

>>> re.sub('python', matchcase('snake'), text, flags=re.IGNORECASE)

'UPPER SNAKE, lower snake, Mixed Snake'

matchcase('snake') 返回了一个回调函数(参数必须是 match 对象),sub() 函数除了接受替换字符串外,还能接受一个回调函数。

三、你正在试着使用正则表达式去匹配一大块的文本,而你需要跨越多行去匹配

>>> comment = re.compile(r'/\*(.*?)\*/')

>>> text1 = '/* this is a comment */'

>>> text2 = '''/* this is a

... multiline comment */

... '''

>>>

>>> comment.findall(text1)

[' this is a comment ']

>>> comment.findall(text2)

re.compile() 函数接受一个标志参数叫 re.DOTALL ,在这里非常有用。 它可以让正则表达式中的点(.)匹配包括换行符在内的任意字符。比如:

>>> comment = re.compile(r'/\*(.*?)\*/', re.DOTALL)

>>> comment.findall(text2)

[' this is a\n multiline comment ']

四、你想通过某种对齐方式来格式化字符串

于基本的字符串对齐操作,可以使用字符串的 ljust() , rjust() 和 center() 方法。比如:

>>> text = 'Hello World'

>>> text.ljust(20)

'Hello World '

>>> text.rjust(20)

' Hello World'

>>> text.center(20)

' Hello World '

>>> text.rjust(20,'=')

'=========Hello World'

>>> text.center(20,'*')

'****Hello World*****'

>>>

函数 format() 同样可以用来很容易的对齐字符串。 你要做的就是使用 或者 ^ 字符后面紧跟一个指定的宽度。比如:

>>> format(text, '>20')

' Hello World'

>>> format(text, '<20')

'Hello World '

>>> format(text, '^20')

' Hello World '

>>>

如果你想指定一个非空格的填充字符,将它写到对齐字符的前面即可:

>>> format(text, '=>20s')

'=========Hello World'

>>> format(text, '*^20s')

'****Hello World*****'

>>>

当格式化多个值的时候,这些格式代码也可以被用在 format() 方法中。比如:

>>> x = 1.2345

>>> format(x, '>10')

' 1.2345'

>>> format(x, '^10.2f')

' 1.23 '

>>>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

python文档字符串格式_Python字符串及文本模式方法详解相关推荐

  1. python对文件的处理_python文件处理fileinput使用方法详解

    这篇文章主要介绍了python文件处理fileinput使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.介绍 fileinput模块 ...

  2. python画图软件是哪个_Python实现画图软件功能方法详解

    Python实现画图软件功能方法详解,按钮,事件,绑定,快捷键,直线 Python实现画图软件功能方法详解 易采站长站,站长之家为您整理了Python实现画图软件功能方法详解的相关内容. 概述 虽然P ...

  3. python set函数 返回排序_Python排序函数的使用方法详解

    Python排序函数完美体现了Python语言的简洁性,对于List对象,我们可以直接调用sort()函数(这里称为"方法"更合适)来进行排序,而对于其他可迭代对象(如set,di ...

  4. python对共轭复数的定义_python print出共轭复数的方法详解

    复数是由一个实数和一个虚数组合构成,表示为:x+yj 一个复数时一对有序浮点数(x,y),其中x是实数部分,y是虚数部分. Python语言中有关复数的概念: 1.虚数不能单独存在,它们总是和一个值为 ...

  5. python里order什么意思_python中OrderedDict的使用方法详解

    很多人认为python中的字典是无序的,因为它是按照hash来存储的,但是python中有个模块collections(英文,收集.集合),里面自带了一个子类 OrderedDict,实现了对字典对象 ...

  6. java 替换 word_Java 在 Word 文档中使用新文本替换指定文本的方法

    创作一份文案,经常会高频率地使用某些词汇,如地名.人名.人物职位等,若表述有误,就需要整体撤换.文本将介绍如何使用Spire.Doc for Java,在Java程序中对Word文档中的指定文本进行替 ...

  7. python读二进制格点雷达基数据_对numpy中二进制格式的数据存储与读取方法详解...

    使用save可以实现对numpy数据的磁盘存储,存储的方式是二进制.查看使用说明,说明专门提到了是未经压缩的二进制形式.存储后的数据可以进行加载或者读取,通过使用load方法. In [81]:np. ...

  8. python实现排序函数_Python排序函数的使用方法详解

    Python排序函数完美体现了Python语言的简洁性,对于List对象,我们可以直接调用sort()函数(这里称为"方法"更合适)来进行排序,而对于其他可迭代对象(如set,di ...

  9. python布尔类型运算_Python对象类型及其运算方法(详解)

    基本要点: 程序中储存的所有数据都是对象(可变对象:值可以修改 不可变对象:值不可修改) 每个对象都有一个身份.一个类型.一个值 例: >>> a1 = 'abc' >> ...

最新文章

  1. javascript 自动填写表单
  2. pythonturtle库使用心得_记录我的Python学习之旅(一)关于turtle库的基本用法
  3. 黑猿大叔-译文 | TensorFlow实现Batch Normalization
  4. python故事_python的故事
  5. (纯代码)图片移动放大缩小:
  6. IOS CopyPNGFile 异常问题解决
  7. SAP 录屏BDC使用—实例
  8. No WebApplicationContext found: no ContextLoaderListener registered?
  9. android不是16位,16位图像和Android处理
  10. 反激式开关电源设计资料
  11. CodeCanyon上的20种最佳WordPress登录表单
  12. python明文密文_「每日一练」Python实现明文和密文的输入
  13. stata17安装教程
  14. python实现插值填充有序均匀点云空洞
  15. excel 序号下拉不能够自动(递增)排序
  16. 超级计算机的现状与应用,浅谈超级计算机发展的过程及研究现状
  17. android五层系统架构,Android系统的五层架构、Dalvik与ART、最后有个奇怪的问题请教orz...
  18. hack the box 注册邀请码的获取
  19. Function和function
  20. 自动记帐如何确定会计科目的借贷

热门文章

  1. c语言随机函数怎么循环,如何在C ++循环中生成不同的随机数?
  2. html5 drawimage参数,HTML canvas
  3. Sql为什么连接不上服务器上的数据库
  4. Linux常用命令(掌握完操作Linux基本就够用了)
  5. 微信小程序学习笔记01:微信小程序概述
  6. Flask学习笔记01:安装Flask模块与入门案例
  7. 2011年倒数第三天,下雪,第一次写博客
  8. 2017.10.14 【FOTILE模拟赛】L 失败总结
  9. 2017.9.17 function 思考记录
  10. php 设置 server 变量,php 服务器变量 $_SERVER