问题
你想去掉文本字符串开头,结尾或者中间不想要的字符,比如空白。
解决方案
对于简单的文本替换,我们可以使用 [lr]strip
和 replace
strip()
方法能用于删除开始或结尾的字符。 lstrip()
和 rstrip()
分别从左和从右执行删除操作。 默认情况下,这些方法会去除空白字符,但是你也可以指定其他字符集合。
Python中有三个去除头尾字符、空白符的函数,它们依次为:
strip: 用来去除头尾字符、空白符(包括\n、\r、\t、' ',即:换行、回车、制表符、空格)
lstrip:用来去除开头字符、空白符(包括\n、\r、\t、' ',即:换行、回车、制表符、空格)
rstrip:用来去除结尾字符、空白符(包括\n、\r、\t、' ',即:换行、回车、制表符、空格)
注意:这些函数都只会删除头和尾的字符,中间的不会删除。
'mississipip'.lstrip('ms') # 删除开头的m和s
'ississipip' #输出
'mississipip'.lstrip('mia') #删除开头的m和i ,a
'ssissipip'
'mississipip'.lstrip('mias') #删除开头的m和i ,a,s
'pip'
'mississipip'.strip('mias') #删除的m和i ,a
'pip'
'mississipipssaa'.strip('mias') #删除开头和结尾的m i a s
'pip'
' mississipipa '.strip() #删除空格符
'mississipipa'
' mississipipa '.lstrip() #删除开头的空格符
'mississipipa '
' mississipipa '.rstrip() #删除结尾的空格符
' mississipipa'
如果需要替换或者删除中间的某些字符,可以使用 replace
方法
'mississipipas'.replace('p','l') #l替换p
'mississililas'
'mississipipas'.replace('p','')
'mississiias'
么对于复杂的替换或者删除操作,比如需要一次替换多个字符,可以使用 str.translate(table)
方法
这个方法需要传入的 table
是一个实现了 __getitem__()
方法的对象(例如dict),其中key必须是unicode编码,value是unicode编码或者字符或者 None
语法
translate()方法语法:
str.translate(table[, deletechars]);
参数
- table -- 翻译表,翻译表是通过maketrans方法转换而来。
- deletechars -- 字符串中要过滤的字符列表。
返回值
返回翻译后的字符串。
实例
以下实例展示了 translate()函数的使用方法:
intab = "aeiou"
outtab = "12345"
trantab = maketrans(intab, outtab)
str = "this is string example....wow!!!"
print (str.translate(trantab))
以上实例输出结果如下:
th3s 3s str3ng 2x1mpl2....w4w!!!
以上实例去除字符串中的 'x' 和 'm' 字符:
intab = "aeiou"
outtab = "12345"
trantab = maketrans(intab, outtab)
str = "this is string example....wow!!!"
print (str.translate(trantab, 'xm'))
以上实例输出结果:
th3s 3s str3ng 21pl2....w4w!!!
总结:
讨论
字符串替换和删除的方法有很多,一般来说为了追求效率,我们应该使用最简单的那个方法
比如需要替换或删除头部或者尾部的时候考虑 strip
、 lstrip
、 rstrip
还需要替换或删除中间元素时候再考虑 replace
如果遇到更复杂的替换删除操作,或者使用上述方法来做非常麻烦的时候,可以考虑 translate
方法
当然,当涉及到一些模式的时候,可以使用考虑 re
模块来处理字符串