替代字符串的某个字符_马克的Python学习笔记#字符串与文本4

c68e5bef4de2d37789f711ae447f04bf.png

编写多行模式的正则表达式

有些时候我们想对正则表达式做一段文本块匹配,并且希望在匹配的时候跨越多行。我的做法就是使用re.compile()函数。它可接受以一个有用的标记--re.DOTALL,它可以让正则表达式中的句点通配所有字符。一般情况来说,使用re.DOTALL标记就可以很好的完成工作,但是遇到复杂情况的时候(比如做分词的时候)最好还是定义自己的正则表达式模式。

字符串的连接和合并

有时候,我们想把许多小字符串合并为一个大的。对于这种情况,如果想要合并的字符串在一个序列或者可以进行迭代的对象中,最简单就是用join()

>>> 

注意到没有?在' '里面就是我用来填入字符串里面的分隔符。这玩意可能语法上看上去真的有点怪异,但是它真的可以这么用!当然。如果你只是想连接一些简单的字符串,那只需要+操作符就好了,稍微复杂点的咱可以用format()来进行替代

>>> 

实际上,我么之所以用format()来替代主要就是因为使用+操作做大量字符串连接是无比之低效率的。所以我这么一个技巧,是利用生成器的表达式将数据转换为字符串的同时完成连接操作:

>>> 

注意,当你在对字符串连接同I/O操作的时候就需要对需求进行分析。如果字符串都很小,那么该用这样的:

f

这样虽然执行一次的I/O系统资源耗费有些高,但是性能和速度都得到了保证。而当你的字符串都很大的时候,我么就可能需要这种方式了:

f

这样减少系统资源的使用而让程序更加高效的运行。如果我们编写的代码要从很多的字符串中构建输出,这个时候生成器函数yield关键字就有用武之地了:

def 

或者,我们可以把I/O操作和join()智能化的结合一下:

def 

给字符串中的变量名做插值处理

假如我们想要创建一个字符串,其中嵌入的变量名会以变量的字符串形式替换掉。一般来说,这个功能可以通过字符串的format()的方法近似模拟出来,或者,把format_map()和vars()联合起来用,差不多是这个样子:

>>> 

有趣的是,var()的一个特性就是它还可以用到类实例上:

>>> 

但是请注意一下,format()和format_map()的一个缺点就是它没法处理缺少某个值的情况。而避免出现这种情况的解决方案就是又单独定义一个带有_misssing_()方法的字典,然后传参给format_map()。

代码汇总:

import 

参考书目

《Python CookBook》作者:【美】 David Beazley, Brian K. Jones

Github地址:

yidao620c/python3-cookbook​github.com
df98a75b4e7b6bb911b284f78f4d35bd.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值