我正在尝试在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)
答案 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
的实施)好运。