python使用切片实现去除字符串首尾空白字符

测试项为:

if trim('hello  ') != 'hello':
    print('left+测试失败!')
elif trim('  hello') != 'hello':
    print('right+测试失败!')
elif trim('  hello  ') != 'hello':
    print('both+测试失败!')
elif trim('  hello  world  ') != 'hello  world':
    print('middle+测试失败!')
elif trim('') != '':
    print('blank+测试失败!')
elif trim('    ') != '':
    print('longBlank+测试失败!')
else:
    print('测试成功!')

初学阶段,记录我看到这个题目自己的实现思路:

(1)获取第一个非空白字符和最后一个非空白字符的索引;

(2)用切片方式截取(1)中两个索引之间的值.

我的实现代码是:

def trim(s):
  index=[]  
  for pos,letter in enumerate(s):  
    if letter !=" ":
       index.append(pos)           #遍历字符串,获取所有非空白字符的索引,存放至列表
  if index==[]:
      s=""                         #如果索引列表为空,表示字符串中无非空白字符,返回""
  else:
      s=s[index[0]:index[-1]+1]    #截取中间字符串(因为切片右边区间为开区间,+1)
  return s

可以测试通过,但是后来在网上看到其他朋友写的实现,简洁易懂,记录下给自己涨经验:

def trims(s):
    if not isinstance(s,str):
        raise ('not suportting')
    if s==' ':
        return ' '
    else:
      while s[:1] ==' ':         #使用while循环每次去掉首部的一个空字符
        s=s[1:]
      while s[-1:] == ' ':       #使用while循环每次去掉尾部的一个空字符
        s=s[:-1]
    return s

 

你可能感兴趣的:(Python)