繁体   English   中英

使用列表推导重新创建 strip() 方法,但 output 返回意外结果

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM