鱼C论坛

 找回密码
 立即注册
查看: 1669|回复: 5

[已解决]利用切片操作,实现一个trim()函数,去除字符串首尾的空格

[复制链接]
发表于 2018-1-26 08:10:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 WINNIPEG 于 2018-1-28 06:45 编辑

利用切片操作,实现一个trim()函数,去除字符串首尾的空格,现在的情况的 首尾都分别处理了,该怎么处理首尾同时出现空格的代码?

  1. def trim(s):
  2.     if s[-1:]==' ':
  3.         return ('mowei you kong ge')
  4.     elif s[:1]==' ':
  5.         return ('shouwei you kong ge')
  6.     else:
  7.         return s
  8. print(trim(' hello world'))
  9. print(trim('hello world '))
  10. print(trim(' hello world '))
复制代码


各位,如果字符串稍后不止一个空格没法正确处理,是不是该引入循环语句了?
最佳答案
2018-1-26 08:37:10
很简单啊!加两句就可以了。
def trim(s):
    if s[-1:] ==' 'and s[:1]==' ':
        return ('末尾与首位都有空格')
    elif s[-1:] ==' ':
        return ('末尾有空格')        
    elif s[:1]==' ':
        return ('首位有空格')
    elif s[:1]==' ':
        return s
print(trim(' hello world'))
print(trim('hello world '))
print(trim(' hello world '))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-26 08:16:23 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-26 08:37:10 | 显示全部楼层    本楼为最佳答案   
很简单啊!加两句就可以了。
def trim(s):
    if s[-1:] ==' 'and s[:1]==' ':
        return ('末尾与首位都有空格')
    elif s[-1:] ==' ':
        return ('末尾有空格')        
    elif s[:1]==' ':
        return ('首位有空格')
    elif s[:1]==' ':
        return s
print(trim(' hello world'))
print(trim('hello world '))
print(trim(' hello world '))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-26 08:41:10 | 显示全部楼层
trim 是php的函数吧
不想用python的内置函数str.strip()
要自己写的话 也应该写成
  1. def trim(s):
  2.     if s[0].isspace():
  3.         return trim(s[1:])
  4.     elif s[-1].isspace():
  5.         return trim(s[:-1])
  6.     else:
  7.         return s
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-26 09:05:51 | 显示全部楼层
如果不能用strip方法,可以用列表的pop方法
而且可以删除多个空格
  1. def trim(s):
  2.     temp = list(s)
  3.     while temp[-1] == ' ':
  4.         temp.pop()
  5.     while temp[0] == ' ':
  6.         temp.pop(0)
  7.     return ''.join(str(i) for i in temp)

  8. print(trim('        hellow world!'))
  9. print(trim('hellow world!   '))
  10. print(trim('        hellow world!   '))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-27 01:39:50 | 显示全部楼层
各位,如果字符串稍后不止一个空格没法正确处理,是不是该引入循环语句了?
  1. def trim(s):
  2.     if s[-1:]==' ' and s[:1]==' ':
  3.         return ('shoumowei you kongge')
  4.     elif s[-1:]==' ':
  5.         return ('mowei you kong ge')
  6.     elif s[:1]==' ':
  7.         return ('shouwei you kong ge')
  8.     else:
  9.         return s
  10. print(trim(' hello world'))
  11. print(trim('hello world '))
  12. print(trim(' hello world '))
  13. print(trim('hello world'))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-29 01:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表