Python--删除字符串首尾空格函数的实现

在上一篇文章中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])      #尾为空格,将尾字符切片,返回剩余字符串

注意:

  1. 当字符串前后空格过多,递归深度会增加,新建的栈越来越多, 迟早会造成爆栈,因为python没有对尾递归进行优化。但是理论上,尾递归可以不爆栈。有人写了尾递归优化的装饰器,后面我再贴出。
  2. 要判断字符串为空和都是空格的情况,否则,报"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

你可能感兴趣的:(Python--删除字符串首尾空格函数的实现)