Python移除字符串空格、指定前后缀字符集、指定前后缀字符串
移除字符串前后空格函数strip()
经常会用到,如果只移除前缀的空格或者后缀的空格就可以用lstrip()
和rstrip()
。
而且这三个函数还有一个可选的参数[chars]
,这个参数很少用但是很实用,可以传递一个字符串(后面也叫字符集),函数会根据传递的字符集对匹配的字符逐一剔除,直到遇到不包含在字符集内的字符结束。
去除空格函数
str.strip([chars])
:移除字符串前后空格,或移除前后指定字符集内的字符。str.lstrip([chars])
:移除字符串前缀空格,或移除前缀指定字符集内的字符。str.rstrip([chars])
:移除字符串后缀空格,或移除后缀指定字符集内的字符。
str.strip([chars])
参考代码:https://gitee.com/hanhongwen/python-base/blob/master/py_function/fun_strip.py
strip()
函数去除字符串前后的空格,也可以传入[chars]
字符集(字符串),按照字符集内的字符逐一提出字符串前后与之匹配的字符,直到遇到匹配不一致的为止。
# 移除字符串前后空格或者指定字符集
def fun_strip(input_str, chars=None) -> str:
return input_str.strip(chars)
if __name__ == '__main__':
# 在未传参的时候,剔除前后所有空格。
strip_str = fun_strip(" this is strip. ")
print(strip_str, len(strip_str)) # this is strip. 14
# 传参是sihtpi字符集,从前后剔除包含所有字符集的字符,直到未包含的字符为止。
strip_str = fun_strip("this is strip", chars="sihtpi")
print(strip_str, len(strip_str)) # is str 7
# 传参是sihtp 字符集,这里注意一下有一个空格,所以从前和从后都会会匹配到strip的r字符才结束。
strip_str = fun_strip(" this is strip ", chars="sihtp ")
print(strip_str, len(strip_str)) # r 1
str.lstrip([chars])
参考代码:https://gitee.com/hanhongwen/python-base/blob/master/py_function/fun_lstrip.py
lstrip()
函数与strip()
函用法一样,只不过区别是只对字符串的前缀有效,可以理解成left strip
简写成lstrip
。不做过多介绍,具体使用如下:
# 移除字符串前缀空格或者指定集合的字符
def fun_lstrip(input_str, chars=None) -> str:
return input_str.lstrip(chars)
if __name__ == '__main__':
# 在未传参的时候,剔除前缀的所有空格,保留后边的空格。
lstrip_str = fun_lstrip(" this is lstrip. ")
print(lstrip_str, len(lstrip_str)) # this is lstrip. 17
# 传参是siht字符集,从开始剔除包含所有字符集的字符,直到未包含的字符为止。
lstrip_str = fun_lstrip("this is lstrip.", chars="siht")
print(lstrip_str, len(lstrip_str)) # is lstrip. 11
# 传参是siht 字符集,这里注意一下有一个空格,所以会匹配到lstrip的l字符才结束。
lstrip_str = fun_lstrip("this is lstrip.", chars="siht ")
print(lstrip_str, len(lstrip_str)) # lstrip. 7
str.rstrip([chars])
参考代码:https://gitee.com/hanhongwen/python-base/blob/master/py_function/fun_rstrip.py
rstrip()
函数与上述lstrip()
函数同理,只对字符串的尾缀有效,right strip
简写成rstrip
。不做过多介绍,具体使用如下:
# 移除字符串后缀空格或者指定集合的字符
def fun_rstrip(input_str, chars=None) -> str:
return input_str.rstrip(chars)
if __name__ == '__main__':
# 在未传参的时候,剔除后缀的所有空格,保留左边的空格。
rstrip_str = fun_rstrip(" this is rstrip. ")
print(rstrip_str, len(rstrip_str)) # this is rstrip. 19
# 传参是thrsi字符集,从后缀字符串中剔除包含所有字符集的字符,直到未包含的字符为止。
rstrip_str = fun_rstrip("this is rstrip str", chars="rstpi")
print(rstrip_str, len(rstrip_str)) # this is rstrip 15
# 传参是rstpi 字符集,这里注意一下有一个空格,所以会匹配到this的h字符才结束。
rstrip_str = fun_rstrip("this is rstrip str", chars="rstpi ")
print(rstrip_str, len(rstrip_str)) # th 2
扩展removeprefix()和removesuffix()函数
在strip()
、lstrip()
和rstrip()
函数传递参数的时候会逐一匹配字符串内的字符,所以会有"this is rstrip str".lstrip(this )
最终只返回rstrip str
结果。
有时只需要剔除匹配与之一样的字符串就可以了,比如"this is rstrip str".lstrip(this )
返回is rstrip str
这时候就可以用到removeprefix()
函数。与之相反可以用removesuffix()函数。
注:"this is rstrip str".lstrip(this )
返回is rstrip str
例子是错的哈。
str.removeprefix(prefix, /)
剔除字符串前缀开始与之匹配的字符串。
>>> 'TestHook'.removeprefix('Test')
'Hook'
>>> 'BaseTestCase'.removeprefix('Test')
'BaseTestCase'
str.removesuffix(suffix, /)
剔除字符串后缀开始与之匹配的字符串。
>>> 'MiscTests'.removesuffix('Tests')
'Misc'
>>> 'TmpDirMixin'.removesuffix('Tests')
'TmpDirMixin'