你想去掉文本字符串开头,结尾或者中间不想要的字符,好比空白。python
对于简单的文本替换,咱们可使用[lr]strip
和replace
微信
strip()
方法能用于删除开始或结尾的字符。 lstrip()
和 rstrip()
分别从左和从右执行删除操做。 默认状况下,这些方法会去除空白字符,可是你也能够指定其余字符集合。app
>>> ' spacious '.lstrip() 'spacious ' >>> 'www.example.com'.lstrip('cmowz.') 'example.com' >>> ' spacious '.rstrip() ' spacious' >>> 'mississippi'.rstrip('ipz') 'mississ' >>> ' spacious '.strip() 'spacious' >>> 'www.example.com'.strip('cmowz.') 'example'
若是须要替换或者删除中间的某些字符,可使用replace
方法编码
>>> 'abc'.replace('b', '') 'ac'
那么对于复杂的替换或者删除操做,好比须要一次替换多个字符,可使用str.translate(table)
方法spa
这个方法须要传入的table
是一个实现了__getitem__()
方法的对象(例如dict),其中key必须是unicode编码,value是unicode编码或者字符或者None
code
mapping = { ord('1'): 'a', ord('2'): ord('b'), ord('3'): None, } str1 = '123' str2 = str1.translate(mapping) print(str2)
输出为ab
对象
咱们也可使用str.maketrans()
来更简单的生成上述的table
,好比经过一个key和value都是字符的dict
生成一个上述的table
ip
mapping = { '1': 'a', '2': ord('b'), '3': None, } str1 = '123' str2 = str1.translate(str.maketrans(mapping)) print(str2)
输出为ab
ci
也能够经过两个相同长度的字符串建立一个上述的table
unicode
mapping = str.maketrans('123', 'abc') str1 = 'ppp123yyy' str2 = str1.translate(mapping) print(str2) pppabcyyy
字符串替换和删除的方法有不少,通常来讲为了追求效率,咱们应该使用最简单的那个方法
好比须要替换或删除头部或者尾部的时候考虑strip
、lstrip
、rstrip
还须要替换或删除中间元素时候再考虑replace
若是遇到更复杂的替换删除操做,或者使用上述方法来作很是麻烦的时候,能够考虑translate
方法
固然,当涉及到一些模式的时候,可使用考虑re
模块来处理字符串
Stack Overflow
欢迎关注个人微信公众号:python每日一练