在Python

时间:2016-10-26 00:55:26

标签: python

我正在尝试在Python中实现我自己的strip方法,所以不使用内置方法,我希望我的函数能够从左侧和右侧去除所有空格。

在这里,我要做的是创建一个列表,删除第一个非空格字符之前的所有空白字符,然后以相反的方式执行,最后将列表返回到字符串。但是根据我所写的内容,它甚至不会删除一个空格。

我知道我想要做的事情甚至可能都不起作用,所以我也希望看到最好的方法来做到这一点。我对编程很陌生,所以我会采取任何建议,使我的程序更好。谢谢!

# main function
inputString = input("Enter here: ")
print(my_strip(inputString))

def my_strip(inputString):
    newString = []
    for ch in inputString:
        newString.append(ch)
    print(newString)
    i = 0
    while i < len(newString):
        if i == " ":
            del newString[i]
        elif i != " ":
            return newString
        i += 1
    print(newString)

3 个答案:

答案 0 :(得分:0)

不要做一堆字符串操作,而是让我们得到非空白部分的开始和结束索引,并返回一个字符串切片。

def strip_2(s):
    start = 0
    end = -1
    while s[start].isspace():
        start += 1
    while s[end].isspace():
        end -= 1
    end += 1
    return s[start:end or None]

答案 1 :(得分:0)

使用正则表达式怎么样?

import re

def my_strip(s):
   return re.sub(r'\s+$', '', re.sub(r'^\s+', '', s))

>>> my_strip('   a c d    ')
'a c d'

答案 2 :(得分:0)

你似乎要做的是空格的ltrim,因为当你得到一个非空格字符时你会从函数返回。

需要进行一些更改:

# main function
inputString = input("Enter here: ")
print(my_strip(inputString))

def my_strip(inputString):
    newString = []
    for ch in inputString:
        newString.append(ch)
    print(newString)
    i = 0
    while i < len(newString):
        if i == " ": # <== this should be newString[i] == " "
            del newString[i]
        elif i != " ": # <== this should be newString[i] == " "
            return newString
        i += 1 # <== this is not needed as the char is deleted, so the next char has the same index
    print(newString)

所以更新的代码将是:

# main function
inputString = input("Enter here: ")
print(my_strip(inputString))

def my_strip(inputString):
    newString = []
    for ch in inputString:
        newString.append(ch)
    print(newString)
    i = 0
    while i < len(newString):
        if newString[i] == " ":
            del newString[i]
        elif newString[i] != " ":
            return newString
    print(newString)

祝其余的练习(rtrim的实施)好运。