在上一篇文章中Python-批量修改文件名中,有用到strip()函数删除字符串首尾空格。
strip()函数示例:
str = " 字符串 "
print (str.strip())
输出:
字符串
开始我也忘记了这个函数,所以用的其他方法,这里列举出来。
1 递归:
def delete_space(str):
if not str or str.isspace()==True:
return str
elif str[0] != ' ' and str[-1] != ' ': #头尾都不是空格,返回值
return str
elif str[0] == ' ': #首为空格,将首字符切片,返回剩余字符串
return delete_space(str[1:]) #尾递归
else:
return delete_space(str[:-1]) #尾为空格,将尾字符切片,返回剩余字符串
注意:
- 当字符串前后空格过多,递归深度会增加,新建的栈越来越多, 迟早会造成爆栈,因为python没有对尾递归进行优化。但是理论上,尾递归可以不爆栈。有人写了尾递归优化的装饰器,后面我再贴出。
- 要判断字符串为空和都是空格的情况,否则,报"string index out of range"异常。
2 循环:
def delete_space(str):
for i in range(len(str)):
if str[0] ==' ':
str= str[1:]
for j in range(len(str)):
if str[-1] == ' ':
str = str[:-1]
return str
3 正则:
import re
def delete_space(str):
try:
str=re.search("^\s*(.*?)\s*$",str).group(1) #从str查找前后除去空格部分
#str = re.sub("^\s*|\s*$" ,"",str) #从str中删除前后空格
return str
except Exception as e:
pass