一、你想在字符串中搜索和匹配指定的文本模式
遗漏点: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'/\*(.*"color: #ff0000">四、你想通过某种对齐方式来格式化字符串
于基本的字符串对齐操作,可以使用字符串的 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,字符串,文本模式
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 《暗喻幻想》顺风耳作用介绍
- 崔健1985-梦中的倾诉[再版][WAV+CUE]
- 黄子馨《追星Xin的恋人们2》HQ头版限量编号[WAV+CUE]
- 孟庭苇《情人的眼泪》开盘母带[低速原抓WAV+CUE]
- 孙露《谁为我停留HQCD》[低速原抓WAV+CUE][1.1G]
- 孙悦《时光音乐会》纯银CD[低速原抓WAV+CUE][1.1G]
- 任然《渐晚》[FLAC/分轨][72.32MB]
- 英雄联盟新英雄安蓓萨上线了吗 新英雄安蓓萨技能介绍
- 魔兽世界奥杜尔竞速赛什么时候开启 奥杜尔竞速赛开启时间介绍
- 无畏契约CGRS准星代码多少 CGRS准星代码分享一览
- 张靓颖.2012-倾听【少城时代】【WAV+CUE】
- 游鸿明.1999-五月的雪【大宇国际】【WAV+CUE】
- 曹方.2005-遇见我【钛友文化】【WAV+CUE】
- Unity6引擎上线:稳定性提升、CPU性能最高提升4倍
- 人皇Sky今日举行婚礼!电竞传奇步入新篇章