[英]Recreating the strip() method using list comprehensions but output returns unexpected result
我正在尝试在 python 中“重新创建” str.split()
方法以获得乐趣。
def ourveryownstrip(string, character):
newString = [n for n in string if n != character]
return newString
print("The string is", ourveryownstrip(input("Enter a string.`n"), input("enter character to remove`n")))
它的工作方式是我创建一个 function 传入两个 arguments:1)第一个是提供的字符串,2)第二个是人想要远程/空格从字符串中移动的字符串或字符。 然后我使用列表推导通过条件语句将“修改”字符串存储为新列表。 然后它将修改后的字符串作为列表返回。
然而,output 将整个内容作为数组返回,字符串中的每个字符都用逗号分隔。
预期 output:
Boeing 747 Boeing 787
enter character to removeBoeing
The string is ['B', 'o', 'e', 'i', 'n', 'g', ' ', '7', '4', '7', ' ', 'B', 'o', 'e', 'i', 'n', 'g', ' ', '7', '8', '7']
我怎样才能解决这个问题?
您设置的是检查列表中的每个单独字符,并查看它是否与永远不会为真的“波音”匹配,因此它将始终返回整个输入。 它将它作为列表返回,因为使用列表推导会生成一个列表。 就像@BrutusForcus 所说,这可以使用字符串切片和string.index()
function 来解决,如下所示:
def ourveryownstrip(string,character):
while character in string:
string = string[:string.index(character)] + string[string.index(character)+len(character):]
return string
这将首先检查您要删除的值是否在您的字符串中。 如果是,则string[:string.index(character)]
将获取第一次出现character
变量值之前的所有字符串,而string[string.index(character)+len(character):]
将获取变量值第一次出现后的字符串。 这将继续发生,直到变量值不再出现在字符串中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.